管道是实现“将前面的标准输出做为后面的标准输入”
xargs是实现“将标准输入做为命令的参数”
你能够试试运行:php
代码:
echo "--help"|cat
echo "--help"|xargs catubuntu
看看结果的不一样。
若是你直接在命令行输入cat而不输入其他的任何东西,这时候的cat会等待标准输入,所以你这时候能够 经过键盘输入并按回车来让cat读取输入,cat会原样返回。而若是你输入--help,那么cat程序会在标准输出上 打印本身的帮助文档。也就是说,管道符 | 所传递给程序的不是你简单地在程序名后面输入的参数,它们会被程序内部的读取功能如scanf和gets等接收,而xargs则是将内容做为普通的参数传递给程序,至关于你手写了cat --help
from
评价:这个不错,之前遇到不接受-参数的就很麻烦,一直没想到用xargs命令行
补充解释:
在一个目录中有以下三个文件文档
a.c b.c c.c
find . / -print命令会打印出三个文件名
find . / -print | grep a.c 只会打印出a.c这个文件字符串
若是只输入命令grep a.c
那么你在键盘中只输入a.c字符串时,a.c会被打印两次,不然只打印你输入的字符
若是要找三个文件中,那个文件包括有hello字符
find ./ -print | xargs grep helloget
总结:管道符后不加xargs至关于先将xargs后面的命令回车执行一下再从键盘里输入管道符前面命令执行的结果内容
加上xargs 至关于直接从键盘输入管道符前面命令执行的结果内容再回车
再总结一下,就是回车的前后顺序不太同样。grep