use*_*828 6 pipe io-redirection input
我有一个包含三个文件的文件夹:
$ ls
a b c
Run Code Online (Sandbox Code Playgroud)
如果我将ls
to的输出通过管道传输wc
,我会得到正确的结果:
$ ls | wc -l
3
Run Code Online (Sandbox Code Playgroud)
但是,当我将 to 的输入指定wc
为 的输出时ls
,我会得到额外的文本:
$ wc -l <(ls)
3 /dev/fd/63
Run Code Online (Sandbox Code Playgroud)
谁能向我解释发生了什么?
Eri*_*ouf 14
wc
如果可以的话,会告诉你它正在处理什么文件。使用管道的第一个是从标准输入读取,而不是文件,因此不报告文件名。但是,第二个是使用进程替换,它将命令的输出显示为一个文件,并wc
报告。它报告从中读取的文件描述符。