首页 > 代码库 > xargs 命令

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用于表明一个由于一个致命的信号而死的了

xargs 命令