xargs的左右逢源

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

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

  • 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的作用是:将标准输入转换为命令行参数。

原文地址:https://www.cnblogs.com/lidabo/p/15656669.html