xargs 命令
NAME
xargs - build and execute command lines from standard
input
从标准输入构建并执行命令行
SYNOPSIS
xargs
[-0prtx]
[-E eof-str]
[-e[eof-str]]
[--eof[=eof-str]]
[--null]
[-d delimiter]
[--delimiter delimiter]
[-Ireplace-str] [-i[replace-str]] [--replace[=replace-str]]
[-l[max-lines]] [-L max-lines] [--max-lines[=max-lines]]
[-nmax-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]]
DESCRIPTION
xargs reads items from the standard input, delimited by blanks
(which can
be protected with double or single quotes or a backslash) or newlines,
xargs命令 从标准输入读items条目(这些条目,通常以空格或换行分隔)
条目中有空格可以使用单、双引号或反斜线保护(eg. “hello world”, ‘hello world’, hello\ world)
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.
并以initial-arguments执行命令一次或多次(默认/bin/echo)
Because Unix filenames can contain blanks and newlines, this default behaviour is often problematic;
filenames containing blanks and/or newlines are incorrectly processed by xargs.
含有空格和换行的文件名,xargs命令无法正确处理。此时,最好使用-0选项阻止此类问题。
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.
当时使用-0选项时,你需要 确保为xargs产生输入的程序 使用null字符作为分隔符
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
immediately without reading any further input.
An error message is
issued on stderr when this happens.
如果对该命令的任何调用以255状态退出,xargs将立刻停止不再读取任何输入,并向stderr发布一个error消息
OPTIONS
--arg-file=file
-a file
Read
items from file instead of standard input.
If you use this option, stdin remains unchanged when
commands are run.
Otherwise, stdin is redirected from
/dev/null.
--null
-0 Input items are terminated by a null character
instead of by whitespace, 输入条目以null字符中断而不是空格
and the quotes and backslash are
not special (every character is taken literally). 并且引号和反斜线也不再是特殊字符(每个字符都被字面地接受)
Disables
the end of file string, which is treated like any other argument.
Useful when input items might contain white space, quote marks, or
backslashes. 当输入条目也许包含空格、引号、反斜线时,给选项-0有用
The GNU find -print0 option produces input
suitable for this mode. find命令的 -print0 选项产生的输入适合该模式
--delimiter=delim
-d delim
Input items are
terminated by the specified character. 输入项被指定的字符中断
Quotes and backslash are not special;
every character in the input is taken literally. 引号和反斜线不再特殊,输入中的每个字符都字面地被接受
Disables the
end-of-file string, which is treated like any other argument. 禁用文件结束字符串,文件结束字符串像任何其他参数一样对待
This can be used when the input consists of simply
newline-separated items, 当输入仅有换行分隔的条目组成时,-d选项能够被使用。
although it is almost always better to design your program to use --null where this is possible. 尽管,在可能的情况下,使用--null总是会更好
The specified
delimiter may be a single character, a C-style character escape such as \n, or an octal or hexadecimal escape code.
指定的分隔符可以是一个单字符,一个C分隔的转义符(如, \n,或一个八进制、十六进制的转义符编码)
Octal and
hexadecimal escape codes are understood as for the printf command.
Multibyte characters are not supported.
-E eof-str
Set the end of file string to eof-str. 设置文件结束字符串
If
the end of file string occurs as a line of input, the rest of the
input is ignored. 如果文件结束字符串作为输入的一行出现,输入的余下部分将被忽略
If neither -E nor -e is used, no end of
file string is used.
--eof[=eof-str]
-e[eof-str]
This option is
a synonym for the -E option. -e选项是-E选项的同义词。可以使用-E作为替代,因为-E是POSIX兼容的(而-e不是)
Use -E instead, because it is POSIX compliant
while this option is not.
If eof-str is omitted, there is no
end of file string. If neither -E nor -e is used, no end of
file string is used.
-I replace-str
Replace occurrences of replace-str in
the initial-arguments with names read from standard input.
使用从标准输入读取来的名字,替换初始参数initial-arguments中replace-str占位符
Also, unquoted blanks do not terminate input items; instead the
separator is the newline character. Implies -x and -L 1.
--replace[=replace-str]
-i[replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified, and for
-I{} otherwise.
This option is deprecated; use -I
instead.
-L max-lines
Use at most max-lines nonblank input
lines per command line. 每个命令行使用最多max-lines个非空输入行
Trailing blanks cause an input line to be logically continued on the next input line. Implies -x.
--max-lines[=max-lines]
-l[max-lines]
Synonym for the -L option.
Unlike -L, the max-lines argument is optional. If max-lines is not specified, it defaults to one.
不像-L选项,max-lines参数是可选的。如果-L选项没有指定max-lines参数,默认取1(每个命令行使用1个非空输入行作为命令行参数)
The -l
option is deprecated since the POSIX standard specifies -L instead.
--max-args=max-args
-n max-args
Use at
most max-args arguments per command line. 每个命令行最多使用max-args参数
Fewer than max-args arguments will
be used if the size (see the -s option) is exceeded,
unless the
-x option is given, in which case xargs will exit.
--interactive
-p Prompt the user about whether to run
each command line and read a line from the terminal.
Only run the command line if the response starts with `y' or `Y'. Implies
-t.
--no-run-if-empty
-r If the standard input does not
contain any nonblanks, do not run the command.
Normally, the command is run once even if there is no input. This option is a GNU
extension.
--max-chars=max-chars
-s max-chars
Use at
most max-chars characters per command line,
including the command and initial-arguments and the terminating nulls at the ends of the argument strings.
每个命令行最多使用max-chars个字符,包括命令command、初始参数列表initial-arguments和参数字符串末尾的中止符nulls
The largest allowed value is system-dependent, and is
calculated as the argument length limit for exec,
less the size of your environment, less 2048 bytes of headroom. 允许的最大值是系统独立的,作为exec参数长度限制被计算
If this value is more than 128KiB, 128Kib is used as the default value; otherwise,
the default value is the maximum.
1KiB is 1024 bytes.
--verbose
-t Print the command line on the standard
error output before executing it.
--version
Print the version number of xargs and
exit.
--show-limits
Display the limits on the command-line
length which are imposed by the operating system, xargs' choice of
buffer size and the -s option.
Pipe the input from /dev/null
(and perhaps specify --no-run-if-empty) if you don't want xargs to do anything.
从/dev/null导入输入(并可能指定 --no-run-if-empty选项),如果你不希望xargs做任何事情
--exit
-x Exit if the size (see the -s option) is
exceeded. 如果-s选项指定的max-chars值被超过(即某个命令行使用的最大字符个数超过了max-chars值)
--max-procs=max-procs
-P max-procs
Run up
to max-procs processes at a time; the default is 1. 一次可运行的最大进程数,默认为1
If max-procs is 0, xargs
will run as many processes as possible at a time. 如果-P选项为0,则xargs一次可运行任意多个进程
Use the -n
option with -P; otherwise chances are that only one exec will be done.
EXAMPLES
find /tmp -name core -type f -print | xargs /bin/rm -f
Find files named core in or below the directory /tmp and delete them.
Note that this will work incorrectly if there are any filenames containing newlines or spaces.
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Find files named core in or below the directory /tmp and delete them,
processing filenames in such a way that file or directory names containing spaces or newlines are correctly handled.
find /tmp -depth -name core -type f -delete
Find files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example
(because we avoid the need to use fork(2) and exec(2) to launch rm and we don't need the extra xargs process).
cut -d: -f1 < /etc/passwd | sort | xargs echo
Generates a compact listing of all the users on the system.
xargs sh -c 'emacs "$@" < /dev/tty' emacs
Launches the minimum number of copies of Emacs needed, one after the other, to edit the files listed on xargs' standard input.
This example achieves the same effect as BSD's -o option, but in a more flexible and portable way.
EXIT STATUS
xargs exits with the following status:
0 if it succeeds
123 if any invocation of the command exited with status 1-125
124 if the command exited with status 255
125 if the command is killed by a signal
126 if the command cannot be run
127 if the command is not found
1 if some other error occurred.
Exit codes greater than 128 are used by the shell to indicate that a program died due to a fatal signal.
大于128的退出码,被shell用于表明一个由于一个致命的信号而死的了