tee 和输出重定向

tee 和输出重定向
ls -l *.txt | wc -l | tee count.txt
ls -l *.txt | wc -l > tee count.txt

我正在学习基本的 Unix 命令。我以为提到的这两个命令会做同样的事情,但事实并非如此。只有第一个命令写入 count.txt。为什么第二个命令中使用的输出重定向没有执行任何操作?

答案1

ls -l *.txt | wc -l | tee count.txt

在第一个例子中:

ls命令列出当前目录中所有带有文件扩展名的文件.txt,每行一个文件;此输出通过管道传输到wc,计算行数并输出数量;此输出通过管道传输到tee,将输出写入终端,并将相同信息写入文件count.txt。如果count.txt已存在,则将其覆盖。

在你的第二个例子中:

ls -l *.txt | wc -l > tee count.txt

在此示例中将tee被视为文件名而不是命令,并且的输出wc -l将被重定向到新创建的文件,并将包含和字符串tee的输出。wc -lcount.txt

如果您想要与第一个示例相同的行为,那么正确的做法是:

 ls -l *.txt | wc -l > count.txt

>本身就足以将输出重定向到count.txt文件

相关内容