1.功能:

xargs能够将stdin中以空格或换行符进行分隔的数据。形成以空格分隔的參数(arguments),传递给其它命令。由于以空格作为分隔符,所以有一些文件名称或者其它意义的名词内含有空格的时候,xargs可能会误判。简单来说,xargs是给其它命令传递參数的一个过滤器,是构建单行命令的重要组件之中的一个。

之所以要用到xargs,是由于由于非常多命令不支持使用管道|来传递參数,比如:

find /sbin -perm +700 |ls -l         //这个命令是错误,由于标准输入不能作为ls的參数
find /sbin -perm +700 |xargs ls -l //这样才是正确的

2.命令格式

xargs [选项] [command]

3.选项说明:

-0:假设输入的stdin含有特殊字符,比如反引號`、反斜杠\、空格等字符时。xargs能够将它还原成一般字符。

为xargs的默认选项。
-e <flag>,-E <flag>,--eof=<eof-str>:eof是end of file string的意思。flag能够是一个字符串或者是由空格分隔的多个字符串,当xargs分析到这个flag时,就会停止工作。 见演示样例2。
-p:当每次运行一个argument的时候询问一次用户。
-n <num>:表示命令在运行的时候一次使用的argument的个数,由num指定,默认是用全部的參数。
-t:表示先打印命令,然后再运行。
-a <file>:从文件里读入作为sdtin。 -i,-I:当中-I某些Linux版本号不支持。将xargs的输出每一项參数,单独赋值给后面的命令,參数需要用{}取代。 见演示样例3。
-r:或者--no-run-if-empty,当xargs的输入为空的时候则停止xargs,不用再去运行后面的命令了。-r是xargs的默认选项。
-s <num>:命令行的最大字符数,指的是xargs后面那个命令的最大命令行字符数,包括命令、空格和换行符。 每一个參数单独传入xargs后面的命令。见演示样例4。 -L <line_num>:设置标准输入中最大的行数作为命令每一次运行的參数。 见演示样例5。
-d <delim>, --delimiter=<delim>: xargs处理标准输入默认是按换行符和空格作为分隔符,输出arguments的分隔符是空格,这里改动xargs处理标准输入时的分隔符。
-x:eXit的意思,主要是配合-s使用,当命令行字符数大于-s指定的数值时。退出xargs。 -P:改动最大的进程数,默认是1,为0时候为as many as it can。该选项比較少用。眼下还不清楚该使用方法。

4.使用方法演示样例

(1)将shell的特殊字符还原为一般字符。

[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo
echo `0123`4 56789
`0123`4 56789

假设直接进行例如以下操作。会报无法找到命令01234的错误,由于反引號在shell中会将01234作为一个命令来运行,可是01234不是一个命令。-t表示先打印命令,然后再运行。

[b3335@MIC ~]$ echo `01234` 56789
-bash: 01234: command not found
56789

(2)设置xargs读入參数时的结束标识,以逗号结束。这里要注意结束标志必需要是单独的字段,即以空格或者换行符分隔的字段。

[b3335@MIC ~]$ echo 01234 , 56789|xargs -E ","
01234

(3)将当前文件夹的全部文件加入后缀名。

ls | xargs -t -i mv {} {}.bak

(4)设置命令行的最大字符数。參数默认一个一个单独传入命令中运行。

[b3335@MIC test]$ echo "01234 56789"|xargs -t -s 11
echo 01234
01234
echo 56789
56789

(5)设置标准输入中每次多少行作为命令的參数。默认是将标准输入中全部行的归并到一行一次性传给命令运行。

[b3335@MIC test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo
echo 01234 56789
01234 56789
echo 01234
01234

(6)将文件内容以空格分隔同行输出。

//列出文件内容
cat test.txt
a b c d e
f g h i j
k l m n o //多行输入单行输出:
cat test.txt | xargs
a b c d e f g h i j k l m n o

(7)与ps、grep、awk和kill结合,强制终止指定进程

ps -ef|grep spp|awk '{printf "%s ",$2}'|xargs kill -9

命令解释:

ps -ef|grep spp用于查找包括spp的进程,awk '{printf "%s ",$2,FNR}将目标进程ID打印输出,xargs kill -9则将目标进程ID作为參数传递给kill -9用于杀死进程。


參考文献

[1]Xargs使用方法具体解释

Linux命令(1)——xargs命令的更多相关文章

  1. Linux命令:xargs命令详解,xargs与管道的区别

    阅读目录 为什么要用xargs,问题的来源 xargs是什么,与管道有什么不同 xargs的一些有用的选项 回到顶部 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人 ...

  2. 每日linux命令学习-xargs命令

    xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据 ...

  3. 【Linux常见命令】xargs命令

    xargs - build and execute command lines from standard input. 从标准输入< 方向获取数据,再创建和执行命令 xargs 是给命令传递参 ...

  4. 如何在Linux上使用xargs命令

    大家好,我是良许. 在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种情况下,我们就可以使用 xargs 命令.xargs 可以将一个命令的输出 ...

  5. Linux基础:xargs命令

    简介 xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数,通常用途有: 命令组合:尤其是一些命令不支持管道输入,比如ls. 避免参数过长:xargs可以通过-nx来将参数分组,避免 ...

  6. xargs命令_Linux xargs命令:一个给其他命令传递参数的过滤器

    本文要为大家介绍的命令是 xargs,我们把它称为护花使者,因为它总是乐于协助其他的命令来完成一些事情.下面一起来看看它是如何护花的. xargs 是 execute arguments 的缩写,它的 ...

  7. Linux--find命令和 xargs命令组合

    find 查找文件的命令,并可以做出相应的处理 命令格式: find filename [选项][-print -exec -ok ...] 选项参数: 1.-name :按照文件名称查找,可以提前c ...

  8. linux每天一小步---xargs命令详解

    1 命令功能 xargs用来从标准输入中执行命令行 xargs命令用来将一些不支持管道传递参数的命令而使之支持 2 命令语法 xargs  [选项参数] commands 3 命令参数 -O 当标准输 ...

  9. linux中exec和xargs命令的区别和优劣分析

    find的exec及ok命令 exec命令的格式为: exec command {} \; exec后面跟着的是操作命令,然后跟着{}表示每一个参数,然后空格,然后"\;".{}之 ...

  10. Linux中 xargs 命令用法

    xargs命令: xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具. 1.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令 ...

随机推荐

  1. TCP协议格式

    TCP协议 协议格式 0 16 31 |16位源端口 | 16位目标端口| | 32位序号 | | 32位确认序号 | |4位首部长度|保留(6位)|URG|ACK|PSH|RST|SYN|FIN|1 ...

  2. Hdu 2236 无题II 最大匹配+二分

    题目链接: pid=2236">Hdu 2236 解题思路: 将行和列理解为二分图两边的端点,给出的矩阵即为二分图中的全部边, 假设二分图能全然匹配,则说明 不同行 不同列的n个元素 ...

  3. datagrid columns

    columns: [[ { field: 'Source_Id', title: 'Source_Id', hidden: true }, //{ field: 'Current_Value', hi ...

  4. 在项目中使用JMail发送邮件

    1.添加JMail组件:在vs的解决方案资源管理器中,右键添加引用,选择浏览,选择jmail.dll文件,在Bin文件夹中就可以看到添加的JMail组件. 2.注册JMail组件:开始-->运行 ...

  5. C++ 类的深拷贝和浅拷贝完美解决

    //类的深拷贝和浅拷贝 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Poin ...

  6. web页面防盗链功能使用--request.getHeader("Referer")

    使用Request对象设置页面的防盗链 所谓的防盗链就是当你以一个非正常渠道去访问某一个Web资源的时候,服务器会将你的请求忽略并且将你的当前请求变为按正常渠道访问时的请求并返回到相应的页面,用户只有 ...

  7. thymeleaf教程

    本教程涵盖了常见的前端操作,比如,判断,循环,引入模板,常用函数(日期格式化,字符串操作)下拉,js和css中使用,基本可以应对一般场景. 怎么使用? 前端html页面标签中引入如下: <htm ...

  8. 5.3 SpEL语法

    SqEL是一个可以独立于spring的表达式语言,即它可以用在XML中对语法进行简化 5.3 SpEL语法5.3.1 基本表达式一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int. ...

  9. 新型智能芯片nxp----嗯质朴

    公司omap 用到nxp的qx 操作系统   由飞利浦公司创立,已拥有五十年的悠久历史,主要提供工程师与设计人员各种半导体产品与软件,为移动通信.消费类电子.安全应用.非接触式付费与连线,以及车内娱乐 ...

  10. hdu 1181:变形课(搜索水题)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...