顺水人情,指的是利用机会顺便给人好处,管道命令|就喜欢干这事。但是偏偏有人不领情,那管道命令就傻眼了。

书接上文,我们知道很多命令都喜欢胡吃海喝,但是有的命令却不喜欢从键盘上捡食儿,看看这位:

echo '4567' | kill

kill大佬就不处理标准输入的参数,管道命令傻眼了吧,这个时候只能求助于xargs了,xargs可是一个左右逢源的好手。它不会像管道那样,赤裸裸的把好处送到人门前,它会偷偷摸摸的从后院进去,放到命令行参数位置,神不知鬼不觉的就把事情办妥当了,就像这样:

echo '4567' | xargs kill 
# 等同于:kill 4567,大家看到没,东西放到后院了吧?

再来体会一下,xargs的妙用吧:

echo '--help' | cat 
# 输出:--help
echo '--help' | xargs cat 
# 输出:Usage: cat [OPTION]... [FILE]...

其实,xargs做事非常细致,大件礼品会分成小份,掩人耳目:默认情况下xargs将其标准输入中的内容以空白(包括空格、Tab、回车换行等)分割成多个之后,当作命令行参数传递给其后面的命令,可以使用 -d 命令指定分隔符,例如:

echo 'www.shelltalk.cn' | xargs -d '.' echo
# 输出:
www shelltalk cn

备注:

xargs的作用是:将标准输入转换为命令行参数。

《趣谈shell》已经正式发布,更多介绍请点击下面图片:

标签: none

添加新评论