xargs

xargs把前面执行的内容做为传给后面跟的命令
问题是传到哪个参数?
创建一个文本a.txt,里面有几行
aa
bb
cc
dd

cat a.txt|touch这样不行,提示:
touch: missing file operand
Try 'touch --help' for more information.

改为cat a.txt|xargs touch,就成功了
不过,touch本来就支持 touch aa bb cc dd这种写法。

touch了这些文件出来,删除也让xargs自动删除吧。
cat a.txt|rm一样不行,提示:
rm: missing operand
Try 'rm --help' for more information.

改为cat a.txt|xargs rm就成功了。但等等,rm aa bb cc dd,我们要一个个地确认才会删除,xargs为什么就不提示了?
这两个测试的命令都是允许带多个参数,还是不好理解它是如何带多个参数的,后面我想到ping,这个只能带一个参数了吧。

c.txt里面有
127.0.0.1
192.168.8.109
然后 cat c.txt|xargs ping 就卡死了,死得与 ping 127.0.0.1 192.168.8.109这个命令一样。
就是说xargs 其实只是把后面的内容转为一个串,后面跟的命令要支持这种一个串的处理,比如 kill

如果命令不支持一个串的处理,那-n1就是在这种情况下使用的了。
如:cat c.txt|xargs -n1 ping -c1

但不加-c1不知道结果不是我想要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值