zsh shell 中“ls > a.txt | wc”和“ls | wc”的输出

zsh shell 中“ls > a.txt | wc”和“ls | wc”的输出

使用shell,我在执行和zsh时观察到相同的输出。有人可以证实我对此的理解吗?ls > a.txt | wcls | wc

在第一个命令中,通过使用运算符并通过使用管道(当前指向文件)重定向到管道的写入端,STDOUT命令从管道读取,从而产生与以下相同的效果a.txt>STDOUTwcls | wc

但我在这里的疑问是,由于我看到相同的输出,这意味着 ls 的输出被写入管道和a.txt(我检查了文件)。为什么输出应该写入两者,因为在ls执行文件描述符时STDOUT将指向管道的写入端或文件,因此我不应该在两者中都获得输出。

假设我位于一个包含 2 个文件的目录中a.txtsample.txt然后

  1. 运行上述两个命令会给出输出2 2 17

  2. a.txt包含

a.txt 

sample.txt

相关内容