【发布时间】:2014-04-01 18:57:16
【问题描述】:
考虑以下...当我在没有任何标志的情况下执行“ls”时,它会在一行中返回结果,如下所示:
me@myComp /cygdrive/c/test/
$ ls
folder1/ folder2/ folder3/
现在,如果我想 grep 某些结果的结果,比如“2”,我会得到以下信息:
me@myComp /cygdrive/c/test/
$ ls | grep 2
folder2/
它不应该返回整行吗?我希望这个结果我使用了ls -l | grep 2。
在我看来,管道操作员正在以某种方式将输入更改为 grep,或者 ls 以某种方式知道管道并更改了自己的输出。
folder1/ folder2/ folder3/ 是一个字符串,不是吗?那么 grep 怎么知道只返回 folder2/ 而不是 folder1/ folder2/ folder3/?
【问题讨论】:
-
我自己早就想知道这一点。 ls 似乎确实知道它的输出将进入管道,因此将每个结果格式化为单独的行。如果输出到终端,它的格式会更紧凑。我不知道这是“官方”行为,还是只是惯例。