根据《Linux与unix shell编程指南》第2章

对xargs解析如下:
xargs的作用是用来回避对命令行长度的限制,它通过使用一个参数多次调用一个命令实现这一功能,而不是一次使用多个参数
。这句话的意思是:xargs永远一次只传给他后面的命令一个参数,然后不停的将所有参数一一传完.
其实这个解析我觉得系错的,等阵再证明“
==============分割线=============
一个简单的应用如下:
bash-3.00$ ls
a.log  a.txt  b.log  b.txt  c.log  c.txt
bash-3.00$ ls | xargs rm                                                         ---------(删除全部文件)
bash-3.00$ ls
bash-3.00$ 

可以睇出xargs的功能:它将输入 输出给xargs后面的命令,作为那个命令的参数。

上面第3行命令意思就是把ls得到的结果 输出给 后面的命令rm,作为rm的参数.
也就是说,上面的命令执行相当于:

rm a.log  a.txt  b.log  b.txt  c.log  c.txt
==============分割线=============
下面证明这句话是错的:
xargs永远一次只传给他后面的命令一个参数,然后不停的将所有参数一一传完
看如下例子
bash-3.00$ ls -l
total 2
-rw-r--r--   1 o475110  u_gtsusr       0 Nov 23 11:10 a
-rw-r--r--   1 o475110  u_gtsusr       0 Nov 23 11:11 b
drwxr-xr-x   2 o475110  u_gtsusr     512 Nov 23 11:11 c_folder          (当前目录下有a b两个文件,和c_folder 这个文件夹)
bash-3.00$ ls -l c_folder/
total 0                                       (c_folder 文件夹是空的)                                                                          
bash-3.00$ ls      
a         b         c_folder              (ls出来的输出)
bash-3.00$ ls |xargs cp            (执行命令)
bash-3.00$ ls                          
a         b         c_folder              (当前目录没变化)
bash-3.00$ ls c_folder/            (把a 和 b copy到了c_folder下)
a  b
bash-3.00$ 
可以看出:

ls |xargs cp  这个命令 相当于执行了 cp a b c_folder     (把 a b copy 到c_folder),而不是把 a b c_folder这3个参数一次一次地传给cp

而是把ls的输出 一次过交给xargs后面的命令cp,作为cp的参数。
==============分割线=============
那么如何将参数1个1个地传给xargs 后面的命令呢
起始xargs 有1个参数-n
-n number       Invokes utility using as many standard input
arguments as possible, up to number (a posi-
tive  decimal  integer)  arguments  maximum.
Fewer arguments will be used if:
o  The  command  line  length  accumulated
exceeds  the  size  specified by the -s
option (or {LINE_MAX} if there is no -s
option), or
o  The  last  iteration  has  fewer   than
number,  but not zero, operands remain-
ing.
能指定每一次指定多少个参数给xargs后面的命令:
例子:
bash-3.00$ ls                                                                #当前目录下有a b c d 4个文件夹                                               
a  b  c  d

bash-3.00$ ls | xargs echo                                           #默认不带参数的话, 管线前面的参数是一次过传给echo的
a b c d
bash-3.00$ ls | xargs -n 1 echo                                    #这次逐个传给echo了。 所以echo 了4次, 有4行
a
b
c
d
bash-3.00$ ls | xargs -n 2 echo                                    #每次传2个参数给echo , echo 了 2次。
a b
c d
bash-3.00$ 

==============分割线=============

这里介绍另1个很有用的参数i
-i[replstr]     This option is equivalent to -I replstr. The
string  {}  is  assumed  for  replstr if the
option-argument is omitted
意思是 xargs 加上 -i 参数后, 能用{} 代表管线前面的输出。
接上面的例子:
例如我想cp a b c d 到另1个文件夹../e
如果用ls | xargs cp -r ../e 是不行的
因为相当于执行了 cp -r ../e a b c d ...      #吧 ../e a b c 这个4个文件copy 到 d
用 ls | xargs -i  cp {} ../e  就ok了
因为{} 就代表了前面ls的输出, 就是a b c d 了啊~

xargs的简单解析相关推荐

  1. 插件化框架DL源码的简单解析

    目前行业内已经有较多的插件化实现方案.本文主要对DL(DynamicLoadApk)这一个开源的侵入式插件化方案进行简单分析.因为Service组件插件化的实现逻辑和Activity大体相似,所以在这 ...

  2. java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】

    本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...

  3. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  4. java在线打开xml文件_java实现简单解析XML文件功能示例

    本文实例讲述了java实现简单解析XML文件功能.分享给大家供大家参考,具体如下: package demo; import java.io.File; import java.io.IOExcept ...

  5. java:AXIS调用webService接口,返回String类型xml,并用dom4j简单解析xml

    一.使用axis调用webService接口,返回String类型xml 1.导入axis依赖 2.直接贴代码 /*** 调用webservice接口的方法,并返回String类型的xml* @par ...

  6. HTML-HTML协议简单解析

    HTML-HTML协议简单解析 在浏览器访问一个地址: 127.0.0.1:7890/html/html.htm //代表访问当地服务器路径下的/html的html.htm文件 客户端发送的请求命令是 ...

  7. C++生成LNK文件及LNK文件简单解析

    C++生成LNK文件及LNK文件简单解析 话不多说,直接上代码吧. 生成快捷方式代码: int CreateLnk(const wchar_t* TARGET, const wchar_t* LNKF ...

  8. 大数据培训课程数据清洗案例实操-简单解析版

    数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据.清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序.大数据培训 数据 ...

  9. 邻近算法(KNN)原理简单解析

    邻近算法(KNN)原理简单解析 一.什么是邻近算法 1.1简介 1.2核心思想 1.3 算法流程 1.4 优缺点 二.实例演示KNN算法 一.什么是邻近算法 1.1简介 邻近算法,或者说K最近邻(KN ...

最新文章

  1. Xt800、DEFY自带号码归属地更新包,更新至2013.4【数据总数278360条】
  2. 『DNS隧道工具集合』— iodine
  3. 牛笔了!Android面试真题解析火爆全网,面试必备
  4. vue 后台管理系统-创建项目
  5. python批量打印机excel_python批量设置多个Excel文件页眉页脚的脚本
  6. 用方框图语言表示指令周期及其流程
  7. IDC评述网:1月下旬国内域名注册商净增量Top10
  8. 删除mysql指令_MySQL常用命令学习笔记
  9. mysql + mha + keepalive + vip_MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置
  10. matlab2010改语言,[转载]ubuntu下安装matlab2010及语言环境设置和创建桌面启动
  11. MySQL闪退以及服务中没有MySQL和MySQL 服务无法启动。系统出错。发生系统错误 1067。 进程意外终止。
  12. 管理定律——管理学中常见的定律集合
  13. NI-VISA监听收发命令 同步或异步读写 示例C和C#源码National Instruments程控电源操作步骤安捷伦
  14. 单细胞分析实录(18): 基于CellPhoneDB的细胞通讯分析及可视化 (上篇)
  15. 密西根州立大学计算机qs分数,密歇根州立大学有哪些专业_专业排名(QS世界排名)...
  16. Python里对于shape()的理解
  17. 如何用C++写一个简单的小游戏?
  18. spring-AOP-苍老师
  19. 杭州旭航集团,申请纳斯达克IPO上市,募资9800万美元
  20. catalog英文翻译_Catalog.是什么意思

热门文章

  1. nginx常用功能介绍
  2. [hypervisor]-AArch64 (hypervisor)Virtualization学习笔记
  3. optee中User TA的加载/验签和运行
  4. [ARM异常]-ARM Core如何响应中断的
  5. base64加密原理及python、C语言代码实现
  6. 用Go语言建立一个简单的区块链part1:基本原型
  7. Android用shareUserID实现多个Activity显示在同一界面
  8. MoeCTF 2021Re部分------Midpython.exe
  9. 【网络安全】如何利用工具发现内部或外部网络攻击面
  10. Intel VT学习笔记(四)—— VMCS(下)