管道命令和xargs的区别(经典解释)

转载 2012年10月31日 22:32:40

一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别
NewUserFF 写道:
懒蜗牛Gentoo 写道:
管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码:
echo "--help"|cat
echo "--help"|xargs cat

看看结果的不同。


试过了,依然不是很确定的明白到底是什么意思,自己再探索一下看看把

如果你直接在命令行输入cat而不输入其余的任何东西,这时候的cat会等待标准输入,因此你这时候可以

通过键盘输入并按回车来让cat读取输入,cat会原样返回。而如果你输入--help,那么cat程序会在标准输出上

打印自己的帮助文档。也就是说,管道符 | 所传递给程序的不是你简单地在程序名后面输入的参数,它们会被

程序内部的读取功能如scanf和gets等接收,而xargs则是将内容作为普通的参数传递给程序,相当于你手写了

cat --help

来自:http://forum.ubuntu.org.cn/viewtopic.php?t=354669

 

补充解释:

在一个目录中有如下三个文件

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 hello

 

总结:管道符后不加xargs相当于先将xargs后面的命令回车执行一下再从键盘里输入

管道符前面命令执行的结果内容

加上xargs 相当于直接从键盘输入管道符前面命令执行的结果内容再回车

再总结一下,就是回车的先后顺序不太一样。

 

 

 

 

 

 

  • 本文已收录于以下专栏:
'); (window.slotbydup=window.slotbydup || []).push({ id: '4765209', container: s, size: '808,120', display: 'inlay-fix' }); })();

shell学习四十五天----xargs

shanyongxu shanyongxu 2015年07月13日 10:59 1880

xargs的使用

lvdan1 lvdan1 2017年11月30日 22:58 32

xargs的i参数

luojiafei luojiafei 2012年01月21日 17:22 26301
'); (window.slotbydup=window.slotbydup || []).push({ id: '4983339', container: s, size: '808,120', display: 'inlay-fix' }); })();

xargs命令作用以及参数详情

huangyong1314 huangyong1314 2016年01月13日 16:27 2118

linux查找技巧: find grep xargs

statdm statdm 2012年07月05日 14:54 16625

linux下使用find xargs grep查找文件及文件内容

qq_19244267 qq_19244267 2016年09月07日 09:53 993

关于 find grep xargs 命令总结

yuhaojin yuhaojin 2017年02月09日 16:38 2101

Linux Shell脚本编程--xargs命令详解

xifeijian xifeijian 2013年08月21日 00:10 9131

文章分类

展开
'); (window.slotbydup=window.slotbydup || []).push({ id: '5384130', container: s, size: '300,300', display: 'inlay-fix' }); })();
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:管道命令和xargs的区别(经典解释)
举报原因: 色情 政治 抄袭 广告 招聘 骂人
其他
原文地址:
原因补充:

(最多只允许输入30个字)

btn_cancel.jpg

此为网页(blog.csdn.net)快照,查看来源