在类似Unix的操作系统上,xargs命令从标准输入生成并执行命令行。 它使您可以在大量文件上运行相同的命令。
查看英文版
1 xargs 运行系统环境
2 xargs 描述
3 xargs 语法
4 xargs 例子
Unix&Linux
xargs从标准输入中读取由空格(可以用双引号或单引号或反斜杠保护)或换行符分隔的项目,并执行一次(多次命令)(默认命令为echo,位于/ bin / echo)带有任何初始参数,后跟从标准输入读取的项目。标准输入上的空白行将被忽略。
因为Unix文件名可以包含空格和换行符,所以这种默认行为经常会出现问题。 xargs错误地处理了包含空格或换行符的文件名。在这些情况下,最好使用-0选项(这是零,而不是大写的o),这样可以防止出现此类问题。使用此选项时,您将需要确保为xargs生成输入的程序还将空字符用作分隔符。例如,如果找到该程序,则-print0选项为您执行此操作。
如果以状态255退出命令的任何调用,则xargs将立即停止,而无需读取任何其他输入。发生这种情况时,将在stderr上发出错误消息。
本文档特定于xargs的GNU版本,该版本通常随Linux的大多数变体一起分发。
查看英文版
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]]
选项
--arg-file=file,-a file | 从文件而不是标准输入读取项目。如果使用此选项,则在运行命令时,stdin 保持不变。否则,stdin 将重定向自/dev/null。 |
--null , -0 | 输入项由空字符而不是空格终止,引号和反斜杠并不特别(每个字符都是按字面意思取的)。禁用文件末尾的字符串,该字符串被视为任何其他参数。当输入项可能包含空格、引号或反斜杠时非常有用。查找-打印 0选项生成适合此模式的输入。 |
-- delimiter=delim, - d delim | 输入项由指定的字符终止。引号和反斜杠并不特别;输入中每个字符都是从字面上看的。禁用文件末尾字符串,该字符串被视为任何其他参数。当输入由分隔的分隔项组成时,可以使用此选项,尽管设计程序以使用--null(在可能的地方)几乎总是更好。指定的分隔符可能是单个字符、C-样式字符转义(如\n)或八进制或十六进制转义代码。八进制和十六进制转义代码被理解为用于 printf命令。不支持多字节字符。 |
- e eof - str | 将文件末尾字符串设置为eof-str。如果文件末尾字符串作为输入行出现,则忽略输入的其余部分。如果未使用 -E和-e,则不使用文件末尾字符串。 |
- - eof=eof - str=, - e=eof - str] | 此选项是-E选项的同义词。请改为使用 -E,因为它符合POSIX标准,而此选项不兼容。如果省略 eof-str,则没有文件末尾的字符串。如果未使用 -E和-e,则不使用文件末尾字符串。 |
- - help | 显示汇总xargs 选项的帮助消息,然后退出。 |
-I replace- str | 用从标准输入读取的名称替换初始参数中替换 str 的发生。此外,未引用的空白不会终止输入项;相反,分隔符是新行字符。暗示-x和-L 1。 |
- - replace[=replace-str]=, - i[replace- str] | 此选项是 -I 替换str的同义词(如果指定了替换str)和-I= 否则。此选项已弃用;但此选项已弃用;用- 我代替。 |
-L max-lines | 使用最多最大行非刀片输入行每个命令行。尾随空白会导致输入行在逻辑上继续下一个输入行。暗示-x. |
-- --max-lines[=max-lines], -l[max-lines] | -l选项的同义词。与-L不同,最大行参数是可选的。如果未指定最大行,则默认为 1。-l选项已弃用,因为 POSIX 标准指定-l。 |
--max-args=max-args,-n max-args | 每个命令行最多使用最大参数参数。如果超过大小(请参阅 -s 选项),则使用的参数少于最大参数,除非给出 -x选项,在这种情况下xargs将退出。 |
--interactive, - p | 提示用户是否运行每个命令行,并读取从终端的行。只有当响应以[y] 或 [Y]开头时,才运行命令行。暗示-t. |
--max-chars=max-chars,-s max-chars | 每个命令行最多使用最大字符,包括命令和初始参数以及参数字符串末端的终止 null。允许的最大值与系统相关,计算为exec的参数长度限制,即环境大小较小,空间空间小于 2048 字节。如果此值大于 128 KiB ,则 128 Kib 用作默认值;如果此值大于 128 KiB,则使用 128 Kib 作为默认值。否则,默认值为最大值。1 基B 是 1024 字节。 |
- - verbose, - t | 在执行标准错误输出之前,在标准错误输出上打印命令行。 |
- - version | 打印xargs 的版本号,然后退出。 |
- - show-limits | 显示操作系统施加的命令行长度限制,xargs的缓冲区大小选择和-s选项。如果您不希望xargs做任何事情,请从/dev/null管道输入(并且可能指定 -- 无运行if-empty-empty-null)。 |
- - exit, - x | 如果超过大小(请参阅-s选项),请退出。 |
--max procs =max procs ,-P max-procs | 一次运行到最大进程;默认值为1。如果最大进程为 0,xargs将一次运行尽可能多的进程。 将-n 选项与-P 一起使用;否则很可能只有一个执行官会做。 |
退出状态
xargs退出时状态如下:
0 | 成功。 |
123 | 命令的一部分调用返回了介于 1 和125 之间的状态。 |
124 | 命令退出时状态为255。 |
125 | 命令被信号击毙了。 |
126 | 无法运行该命令。 |
127 | 未找到该命令。 |
1 | 发生了另一个某种错误。 |
查看英文版
find /tmp -name core -type f -print | xargs /bin/rm -f
查找目录/tmp中或下方名为core并删除它们。请注意,如果有任何包含分隔符或空格的文件名,则此方法将不正确。
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
查找目录/tmp中或下方名为 core 的文件并删除它们,以正确处理包含空格或分隔线的文件或目录名称的方式处理文件名。
find /tmp -depth -name core -type f -delete
在目录/tmp 中查找命名core并删除它们,但比上一示例中更高效(因为我们避免使用分叉和 exec rm,并且我们不需要额外的xargs过程)。
cut -d: -f1 < /etc/passwd | sort | xargs echo
使用 cut生成系统上所有用户的紧凑列表。
xargs sh -c 'emacs "$@" < /dev/tty' emacs
启动Emacs 的最小副本数(一个个)以编辑xargs 的标准输入中列出的文件。
查看英文版
未知的网友