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 -l
count.txt
如果您想要与第一个示例相同的行为,那么正确的做法是:
ls -l *.txt | wc -l > count.txt
>
本身就足以将输出重定向到count.txt
文件