如何推广网站会员注册,企业网站推广渠道有哪些,工业设计考研,wordpress怎样调用分类名称一、xargs命令概述 xargs命令是给其他命令传递参数的一个过滤器#xff0c;也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数#xff0c;xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。空格是其默认定界符#xff0c;管道传递给xargs的输入…一、xargs命令概述 xargs命令是给其他命令传递参数的一个过滤器也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。空格是其默认定界符管道传递给xargs的输入会包含换行和空格不过通过xargs的处理换行和空格将被空格取代。
下图xargs接收标准输入的方式 下图是将标准输入转换成rm的参数。 下图使用了管道管道符“|”这个符号可以将一个命令的标准输出转换为另外一个命令的标准输入。 管道符的使用有两个条件
1、管道命令只能处理前一个命令的标准输出而不能处理标准错误
2、管道命令右边命令必须能够接收标准输入。
二、xargs使用场景 很多程序是不处理标准输入的例如 kill , rm 这些程序如果命令行参数中没有指定要处理的内容则不会默认从标准输入中读取。 上面的命令执行失败是因为rm接受命令行参数中指定的处理内容不从标准输入中获取处理内容。而xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。可以通过下图操作处理。xargs接收标准输入的内容并转换为rm的命令行参数。 常见的能处理标准输入的命令有cat、grep、xargs、wc...
三、xargs命令以及与管道的区别 xargs能够处理管道或者stdin并将其转换成特定命令的命令行参数
管道是将一个命令的标准输出转换为另外一个命令的标准输入
举例对比
1、执行命令echo --help | cat 可以看到管道将标准输出转换为标准输入给cat命令作为cat命令的处理内容然后显示出来。
2、执行命令echo --help|xargs cat 以上命令管道将标准输出转换为标准输入给xargsxargs将标准输入转换为cat命令的命令参数实际等价于cat --help。
四、xargs常用选项使用 xargs不仅能将标准输入转换为后面命令的参数它还可将标准输入分割为批每批中有很多分割片段片段默认按空格分隔然后将这些片段按批交给xargs后面的命令进行处理。 -d 自定义分隔符默认是空白空格、tab、回车换行 -n 设定多少片段为一批将分批的参数传递给后面的命令作为参数执行。这个特性可以用于解决参数过长问题如-bash: /usr/bin/cp: Argument list too long。 -i 使用{}作为替换符这个字符串在命令运行时将替换为参数每个参数命令都会被执行一次。如果不使用-i则默认是将分割处理后的结果整体传递到【命令的最尾部】。但是有时候需要传递到多个位置不使用-i就不知道传递到哪个位置了。这里看到使用i选项后参数都是一个一批最好不要和-n一同使用如-n1可以-n2就会异常。 -t 先打印命令在执行。如下图所示可以看到xargs的默认命令是echo。 -p 每执行一个参数询问一次用户。
五、案例 rm、cp 、mv使用过程中遇到参数过长问题。 删除文件最简单的方法是 rm ./*当要删除的文件过多时会报 Argument list too long 这个错误。原因是 bash 会将 rm ./* 匹配到的文件都展开生成一个非常长的命令linux 内核对 command 长度有限制。getconf ARG_MAX可以查看长度。这时可以使用 xargs 来删除大量文件。 1、ls ./* | xargs rm -rf
xargs 会将匹配到的文件以合理的长度传给 rm -rf相当于是将文件分组删除。 2、find . -name *.log |xargs -i cp {} /tmp/test 3、统计文件数 按10000个文件一行共200行 [rootlocalhost test]# ls |xargs -n 10000|wc -l 200 4、查看三台服务器上nginx进程情况 echo 192.168.0.1 192.168.0.2 192.168.0.3 \ | xargs -i ssh root{} ps aux | grep nginx