对xargs的使用总是比较模糊,大概的理解为:通道中,上一个命令的标准输出逐行作为下一个命令的参数

例如 find /var/temp* | xargs rm -r

功效:找出/var/中所有temp开头的文件和文件夹,再用rm逐行删除

(因为rm不支持管道,因此只能用xargs使find的结果逐行作为rm的参数)

假设:

  1. <span style="font-size:18px;">$ find /var/temp*
  2. $ /var/temp1
  3. /var/temp2</span>

此时,再用xargs rm -r 等效于

  1. <span style="font-size:18px;">$ rm -r /var/temp1
  2. rm -r /var/temp2</span>

============================分割===================================

那么,管道与xargs有什么差别呢?

这是我在使用linux过程中的一个例子。

(find与grep都是支持管道的命令)

  1. <span style="font-size:18px;">#找出/usr/shar/doc中bash-开头的所有文件,结果如下(展开说明前的环境铺垫)
  2. [GMPY@14:44 ~]$find /usr/share/doc/bash-* -type f
  3. /usr/share/doc/bash-completion/AUTHORS
  4. /usr/share/doc/bash-completion/CHANGES.package.old
  5. /usr/share/doc/bash-completion/bash_completion.txt
  6. /usr/share/doc/bash-completion/README
  7. /usr/share/doc/bash-completion/CHANGES
  8. [GMPY@14:45 ~]$
  9. </span>

大家再对比下下面有xargs与无xargs的结果差别

有xargs时的过滤:

  1. <span style="font-size:18px;">[GMPY@14:49 ~]$find /usr/share/doc/bash-* -type f| xargs grep -Ew "README"
  2. /usr/share/doc/bash-completion/bash_completion.txt: also README.
  3. /usr/share/doc/bash-completion/CHANGES: * Fix bash_completion paths in README (Debian: #647941)
  4. /usr/share/doc/bash-completion/CHANGES: * README updated: explain how to use bash-completion correctly.
  5. [GMPY@14:49 ~]$</span>

无xargs时的过滤:

  1. </pre><pre name="code" class="cpp">
  1. <span style="font-size:18px;">[GMPY@14:49 ~]$find /usr/share/doc/bash-* -type f| grep -Ew "README"
  2. /usr/share/doc/bash-completion/README
  3. [GMPY@14:53 ~]$
  4. </span>

结果是不同的,为什么呢?

1、无xargs时是使用管道(虽然严格来说有xargs也是管道,这里为了区分暂时这么称呼),即把find命令的标准输出作为grep的检索内容,等效于:find的结果作为一个“字符串”被grep检索

  1. <span style="font-size:18px;">$ grep -Ew "README" </span>
  1. <span style="font-size:18px;">"/usr/share/doc/bash-completion/AUTHORS
  2. /usr/share/doc/bash-completion/CHANGES.package.old
  3. /usr/share/doc/bash-completion/bash_completion.txt
  4. /usr/share/doc/bash-completion/README
  5. /usr/share/doc/bash-completion/CHANGES"</span>

2、有xargs时,则等效于检索find命令找到的每一个文件

  1. <span style="font-size:18px;">$ grep -Ew "README" /usr/share/doc/bash-completion/AUTHORS
  2. $ grep -Ew "README" /usr/share/doc/bash-completion/CHANGES.package.old
  3. $ grep -Ew "README" /usr/share/doc/bash-completion/bash_completion.txt
  4. $ grep -Ew "README" /usr/share/doc/bash-completion/README
  5. $ grep -Ew "README" /usr/share/doc/bash-completion/CHANGES</span>

xargs命令的使用过程中一个小领悟:管道与xargs的差别的更多相关文章

  1. ESXi与物理交换机静态链路聚合配置过程中的小陷阱

    作者:陆斌文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影响 ...

  2. 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

    关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...

  3. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  4. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)

    html/css  盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width     是"宽 ...

  5. 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)

    在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...

  6. dubbo debug过程中一个有趣的问题

    最近在debug dubbo代码过程中遇到的很有趣的问题 我们都知道dubbo ReferenceBean是消费者的spring bean包装,为了查一个consumer端的问题,在Reference ...

  7. 继《关于讯飞语音SDK开发学习》之打包过程中遇到小问题

    关于讯飞语音SDK开发学习 使用vs自带打包,具体怎么操作就不说了,网上关于这方面的资料挺多的.例如:winform 打包部署,VS2010程序打包操作(超详细的),关键是桌面上创建快捷方式中的&qu ...

  8. stm8 停机模式与外部中断唤醒中一个小问题

    做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗.而对外接口只有4个按键,也就是唤醒必须要通过这四个按键. 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码. 使用芯片为st ...

  9. 第三方开源动画库EasyAnimation中一个小bug的修复

    看过iOS动画之旅的都知道,其中在最后提到一个作者写的开源动画库EasyAnimation(以下简称EA). EA对CoreAnimation中的view和layer动画做了更高层次的包装和抽象,使得 ...

随机推荐

  1. maven仓库使用HTTP代理,maven仓库使用本地jar

    setting.xml <proxies> <proxy> <id>proxy</id> <active>true</active&g ...

  2. JsonPath教程

    1. 介绍 类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的.其表达式可以接受“dot–notation”和“bracket–notation”格式,例如 ...

  3. June 26th 2017 Week 26th Monday

    I am a little tempted, but so afraid to look in your eyes. 我对你有一点动心,却如此害怕看你的眼睛. Now that you are tem ...

  4. iOS的KVO使用和轻量级封装

    KVO的使用方法 注冊 [object addObserver:observer forKeyPath:@"text" options:NSKeyValueObservingOpt ...

  5. BZOJ4887:[TJOI2017]可乐(矩阵乘法)

    Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且 放在了加里敦星球的1号城市上.这个可乐机器人有三种行为:停在原地,去下一个相邻的 城市,自爆. ...

  6. Windows彻底卸载系统自带的office

    由于自带office导致按照新的office会提示要先卸载原来32位的office,又在控制面板或软件管理工具中找不到office,用如下方法删除 1.在C盘删除office文件夹 2.删除注册表 1 ...

  7. 开源项目之kisso

    kisso开源项目:https://gitee.com/baomidou/kisso 一.简介 kisso  =  cookie sso 基于 Cookie 的 SSO 中间件,它是一把快速开发 ja ...

  8. shiro之cache问题

    错误原因分析加解决方案,以供大家参考: 1.错误信息:net.sf.ehcache.ObjectExistsException: Cache shiro-activeSessionCache alre ...

  9. Java中Class类及用法

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方 ...

  10. datagrid和combobox简单应用

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...