顺水人情,指的是利用机会顺便给人好处,管道命令|就喜欢干这事。但是偏偏有人不领情,那管道命令就傻眼了。
书接上文,我们知道很多命令都喜欢胡吃海喝,但是有的命令却不喜欢从键盘上捡食儿,看看这位:
- 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的作用是:将标准输入转换为命令行参数。