我正在练习在Mac OSX中使用终端。为什么grep在这种情况下不能返回整行?
我去/dev/
文件夹从根,想查找包含null
行了,所以我也ls
获得该文件夹的内容。有很多,所以我认为这是一个使用grep
的机会。因此,我输入ls | grep "null"
,并简单地返回null
而不是全行null ttyp9
,如正常ls
列表中所示。
这是怎么发生的?我以为grep
返回完整的行?
我正在练习在Mac OSX中使用终端。为什么grep在这种情况下不能返回整行?
我去/dev/
文件夹从根,想查找包含null
行了,所以我也ls
获得该文件夹的内容。有很多,所以我认为这是一个使用grep
的机会。因此,我输入ls | grep "null"
,并简单地返回null
而不是全行null ttyp9
,如正常ls
列表中所示。
这是怎么发生的?我以为grep
返回完整的行?
ttyp9
是不同文件。
ls
显示的是输出列。
当没有发送到终端ls
不这样做,并行为就像你使用-1
参数。
因此'grep'不会返回行,因为它们与输出一起显示(在本例中是带有'ls'的文本列),但是以某种线性方式显示?或者说,列的东西是'ls'之外的东西? –
不,“grep”确实会返回它获得的行。虽然你得到的行和'grep'得到的行不同。运行'ls -1',你会看到'grep'正在看什么。 –
当向终端显示时,列输出是“ls”所做的事情,使*人*更容易一次查看多个文件。它还“知道”其他工具无法处理(并且不应该)),因此它在输出是终端并且输出不是终端的情况下默认*为不同的行为。查看'ls'和'ls |之间的区别猫'为例。 –
grep
确实会返回全行。 ls
命令本身并未提供详细信息。试试这个:
ls -l | grep "null"
,清单标志给出更多细节,grep的可以再回来。
换句话说,grep
正在做你想做的事,没有什么可以看到的。
没有选项的ls
命令将只显示文件名。通常,返回的文件名列表被包装。你可以解开他们,如果你键入:
ls -1
如果你看一下这个清单中,你会看到,null
实际上是一行全部由自己。
如果添加long listing
选项:
ls -l
你会看到更多的细节。 grep
命令只能返回给它的内容,在这种情况下,ls
是为grep提供所有输入的内容。
不是他正在寻找的细节。 –
为什么'ls'或'grep',只是使用'printf'%s \ n“* null *' – anubhava
仅供参考,[解析ls的输出通常被认为是不好的](http://mywiki.wooledge.org/ParsingLs)。另见:http://askubuntu.com/questions/578242/how-to-combine-ls-and-grep-to-list-only-files-and-using-ls-to-count-dirs当然,如果你只是在学习这是一个很好的练习方式,因为你可以遇到所有奇怪的情况:) – whrrgarbl
@whrrgarbl是的,只是学习。感谢那些链接 –