ls -l *.txt | wc -l | tee count.txt
ls -l *.txt | wc -l > tee count.txt
Run Code Online (Sandbox Code Playgroud)
我正在学习基本的 Unix 命令。我认为提到的这两个命令会做同样的事情,但他们没有。只有第一个命令写入 count.txt。为什么第二个命令中使用的输出重定向没有做任何事情?
ls -l *.txt | wc -l | tee count.txt
Run Code Online (Sandbox Code Playgroud)
在第一个例子中:
该ls
命令列出当前目录中所有文件扩展名为 的.txt
文件,每行一个文件;此输出通过管道传输到wc
,它计算行数并输出数字;此输出通过管道传送到tee
,它将输出写入终端,并将相同的信息写入文件count.txt
。如果count.txt
已经存在,则将其覆盖。
在你的第二个例子中:
ls -l *.txt | wc -l > tee count.txt
Run Code Online (Sandbox Code Playgroud)
在此示例中,tee
将被视为文件名而不是命令,并且 的输出wc -l
将被重定向到新创建的文件tee
,并将包含wc -l
和字符串的输出count.txt
。
如果您想要与第一个示例相同的行为,那么正确的做法是:
ls -l *.txt | wc -l > count.txt
Run Code Online (Sandbox Code Playgroud)
>
本身足以将输出重定向到count.txt
文件
归档时间: |
|
查看次数: |
1519 次 |
最近记录: |