ls命令的输出 | wc -l

3
通常情况下,wc -l命令的输出结果是文件中行数。但是,当我们将ls命令的输出通过管道传递给它时,它似乎能够正确地显示当前工作目录中文件、目录和链接的数量。
我的问题是,ls命令的输出会在同一行显示一些文件和目录的名称。那么,为什么在这种情况下使用ls | wc -lls -l | wc -l相比会得到相同的输出呢?
提前感谢您的回答。

这个问题更适合在 http://unix.stackexchange.com 或者 http://superuser.com 上讨论。 - Michael Berkowski
请参考这个问题 - Otaia
2个回答

6

ls 检测到它被传输到另一个程序而不是控制台,每行输出一个文件/目录。您可以尝试使用 ls | cat 查看此行为。


4

一个程序可以检查文件描述符是否指向终端,并根据此提供不同的输出。 可以使用isatty(3)来实现此目的。

事实上,常见做法是在管道输出时简化输出,以便其他可能被导入的程序更容易进行进一步处理。 特别是像终端控制代码这样的不可打印字符(它们可以改变颜色等)可能很难处理,并且通常在用户没有直接查看输出时是不必要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接