考虑以下内容......当我执行'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/
?
答案 0 :(得分:4)
请参阅ls
的联系人页面,即标记-1
:
-1(数字数字“1”。)强制输出为每个条目一个 线。 当输出不是终端时,这是默认设置。
如果要强制使用多列输出
-C强制多列输出;这是输出时的默认值 终端。
所以要回答你的问题,是的,ls
意识到输出的位置,它具有明确定义的行为,具体取决于你可以轻易覆盖的行为。