一、xargs基础属性
[root@localhost ~]# type xargs # 外置命令
xargs is /usr/bin/xargs
[root@localhost ~]# whereis xargs #二进制文件、源、使用手册位置
xargs:/usr/bin/xargs/usr/share/man/man1/xargs.1.gz/usr/share/man/man1p/xargs.1p.gz
[root@localhost ~]# whatis xargs #所在使用手册的章节位置
xargs (1) - build and execute command lines from standard input
xargs (1p) - construct argument lists and invoke utility
[root@localhost ~]# man xargs
二、xargs官方DESCRIPTION
xargs - build and execute command lines from standard input从标准输入建立和执行命令行
1.xargs从标准输入读取,由空格或者换行界定;
从紧随其后的标准输入执行一次或者多次初始参数
2.xargs从标准输入读入时空白行将被忽略
3.Unix默认文件名可以包含空格和换行机制会导致xargs命令错误处理
(1)此时使用-0选项,但需要确保项目产生输入xargs还可以使用空白标记符作为分隔符
(2)如果是GNU项目可以使用 -print0 选项
4.如果任何调用命令的退出状态是255,xargs将立即停止读入任何数据,同时发出一个错误消息
NAME
xargs - build and execute command lines from standard input
DESCRIPTION
This manual page documents the GNU version of xargs. xargs reads items from the
standard input, delimited by blanks (which can be protected with double or sin-
gle quotes or a backslash) or newlines, and executes the command (default is
/bin/echo) one or more times with any initial-arguments followed by items read
from standard input. Blank lines on the standard input are ignored.
Because Unix filenames can contain blanks and newlines, this default behaviour
is often problematic; filenames containing blanks and/or newlines are incorrect-
ly processed by xargs. In these situations it is better to use the -0 option,
which prevents such problems. When using this option you will need to ensure
that the program which produces the input for xargs also uses a null character
as a separator. If that program is GNU find for example, the -print0 option
does this for you.
If any invocation of the command exits with a status of 255, xargs will stop im-
mediately without reading any further input. An error message is issued on
stderr when this happens.
三、使用格式
SYNOPSIS
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null] [-d
delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-str]]
[--replace[=replace-str]] [-l[max-lines]] [-L max-lines] [--max-lines[=max-
lines]] [-n max-args] [--max-args=max-args] [-s max-chars] [--max-chars=max-
chars] [-P max-procs] [--max-procs=max-procs] [--interactive] [--verbose]
[--exit] [--no-run-if-empty] [--arg-file=file] [--show-limits] [--version]
[--help] [command [initial-arguments]]
[OPTION]
-0, --null:处理文件名中包含的空格和换行,GUN--->-print0
-a file, --arg-file=file: 从指定文件读取数据作为标准输入
--delimiter=delim, -d delim:分隔符,默认的xargs分隔符是回车,argument的分隔符是空格
-e [eof-str], --eof[=eof-str],-E eof-str:匹配到给定字符串结束
-n max-args, --max-args=max-args:在执行的时候一次用的argument的个数,默认所有
-p, --interactive:当每次执行一个argument的时候询问一次用户
-r, --no-run-if-empty :当xargs的输入为空的时候则停止xargs,不用再去执行了
四、EXAMPLES
1.find /tmp -name core -type f -print | xargs /bin/rm -f
2.find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
3. find /tmp -depth -name core -type f -delete
4.cut -d: -f1 < /etc/passwd | sort | xargs echo
5.xargs sh -c ‘emacs "$@" < /dev/tty‘ emacs
五、总结
1.说明:
(1)xargs适用于将上一个命令的输出结果当成标准输入,传递给其后不支持接收管道传递数据的命令
例如 find | xargs COMMAND
(2)xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
(3)它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。
(4)读取数据方式:管道、stdin标准输入、从文件的输出中读取数据
(5)xargs的默认执行命令:echo
(6)管道传递给xargs的输入将会包含换行和空白,xargs会将换行和空白将用空格取代。
(7)一般配合 find(1), locate(1), locatedb(5), updatedb(1), fork(2), execvp(3), kill(1), signal(7)使用
本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1725801
原文地址:http://xuding.blog.51cto.com/4890434/1725801