xargs与管道,组合多个命令

管道是一种通信机制,将一个程序的输出变成另一个程序的输入。

xargs是将参数列表转化成小段分段传递给其他命令。

一个简单的例子:

echo '--help' | cat
echo '--help' | xargs cat

这两条命令看起来非常相似。

管道和xargs容易混淆的点也在于,都是将前半段的内容,传递到后半段。到底有什么具体不同呢?

echo '--help'  输出为‘--help’,将其作为cat的输入,是直接cat '--help'么?

不是的。

管道机制本质上是一个特殊的文件。并且是一次性的,数据一旦被读,立即从管道中消除。

假定将管道想象为文件test.txt,那么第一条命令会被解读为:

echo '--help'   #输出为‘--help’
|               #文件test.txt内容为‘--help’
cat             #cat test.txt 输出‘--help’

理解管道之后,再来看第二条命令:

echo '--help'   #输出为‘--help’
|               #文件test.txt内容为‘--help’
xargs cat       #这里会变成什么呢?

根据xargs的的定义,将参数列表……传递给其他命令。

也就是说,我们可以将test.txt的内容当做一个参数列表,然后将列表传递给其他命令,最终执行其他命令。

也就是说,xargs将test.txt的内容,传递给cat命令,最终执行cat命令

也就是说,上述命令中xargs cat 最终执行的是cat '--help'

也就是说,最终执行结果是酱紫的:

一个简单的变形:

echo 'file1' | cat
echo 'file1' | xargs cat

 分别会输出什么呢?

第一条会输出'file1',第二条会输出file1的内容

试试吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值