ITPub博客

首页 > Linux操作系统 > Linux操作系统 > xargs与管道

xargs与管道

原创 Linux操作系统 作者:牛平 时间:2015-08-31 18:24:52 0 删除 编辑
1.初识xargs
    自己在运维过程中,看到一种用法 find /etc -name '*.conf' | xargs grep 'mysql_close'
觉得xargs有些不清不楚,所以就详细研究了一下。


例:
echo --help | grep
echo --help | xargs grep


    我觉得这个例子很经典,不妨一试,此例引用自网络。


    然后我想了一下,第一个例子echo 的输出,也就是 --help,通过管道传输给grep,第二个例子,echo也是通过管道传输给xargs,这一步在两个例子中是相同的,即,到达grep和xargs命令前,两个命令的输入是相同的。也就是说xargs对数据做了转换,从而导致cat命令对参数发生了不同的理解。


    想想,如果我们在终端输入cat --help,就会打印出帮助信息,但是如果通过管道传输给cat,却发现是--help字符串,说明,xargs模拟了我们手工的录入,即文件传给cat的方式不同了。



2.发生了什么?


   管道的定义:管道就是一个文件,符合Linux下一切皆文件的哲学。第一个例子,我们使用管道,对管道文件写,然后grep在管道文件读。第二个是echo对管道文件写,xargs从管道文件读。grep等于在读一个文件,当然就会显示文件的内容。而xargs通过读取这个管道文件,就会把管道文件转换为标准输入STDIN,然后传给grep,就如同我们在终端输入了grep --help一样。

 综上,xargs的作用在于,将管道文件读取成STDIN,然后传输给后续命令。



     以上属于我的个人猜测,如有问题,希望大家指正。









来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29757574/viewspace-1787766/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一个在金融小企业瞎折腾的运维,梦想给小企业带来尽可能的标准化与自动化。

注册时间:2014-07-18

  • 博文量
    50
  • 访问量
    154498