我有一个包含三个文件的文件夹:
$ ls
a b c
如果我通过管道输出ls
to wc
,我会得到正确的结果:
$ ls | wc -l
3
但是,当我将输入指定wc
为 的输出时ls
,我会得到额外的文本:
$ wc -l <(ls)
3 /dev/fd/63
谁能向我解释发生了什么事?
答案1
wc
如果可以的话,会告诉您它正在处理哪个文件。第一个带有管道的文件是从标准输入读取的,而不是文件,因此不报告文件名。然而,第二个,您正在使用进程替换,它将命令的输出显示为一个文件,并wc
进行报告。它报告从中读取的文件描述符。