xargs命令使用说明

16 篇文章 1 订阅

xargs command

名字: xargs-从标准输入构建和执行命令行

语法: xargs [options] [command [initial-arguments]]

选项:

  • -O, --null
    输入项目以空字符而不是空格终止,并且引号和反斜杠不是特殊的(每个字符均按字面意义使用)。禁用文件字符串的结尾,该字符串与其他任何参数一样对待。输入项可能包含空格,引号或反斜杠时很有用。
    GNU find -print0选项产生适合此模式的输入。

  • -a file, --arg-file=file
    从文件而不是标准输入中读取项目。如果使用此选项,则在运行命令时stdin保持不变。否则,stdin从/dev/null重定向。

  • –delimiter=delim, -d delim
    输入项目以指定字符终止。指定的分隔符可以是单个字符,C样式字符转义符(例如\n)或八进制或十六进制转义码。八进制和十六进制转义码被理解为printf命令。不支持多字节字符。处理输入时,引号和反斜杠并不特殊;输入中的每个字符均按字面意义使用。-d选项禁用任何文件结尾字符串,该字符串与其他任何参数一样对待。当输入仅由换行符分隔的项目组成时,可以使用此选项,尽管在可能的情况下将程序设计为使用–null几乎总是更好的选择。

  • -E eof-str 将文件字符串的末尾设置为eof-str。如果文件字符串的结尾出现在输入行中,则其余输入将被忽略。如果既不使用-E也不使用-e,则不使用文件字符串结尾。

  • -e[eof-str], --eof[=eof-str] 此选项是-E选项的同义词。请改用-E,因为它与POSIX兼容,而该选项不兼容。如果省略eof-str,则文件字符串没有结尾。如果既不使用-E也不使用-e,则不使用文件字符串结尾。

  • -I replace-str 将初始参数中出现的replace-str替换为从标准输入中读取的名称。同样,未加引号的空格也不会终止输入项目。相反,分隔符是换行符。表示-x和-L 1。

  • -i[replace-str], --replace[=replace-str] 如果指定了replace-str,则此选项是-Ireplace-str的同义词。如果缺少replace-str参数,则效果与-I {}相同。不建议使用此选项;使用-I代替。

  • -L max-lines 每个命令行最多使用最大行数非空白输入行。尾随空白会导致输入行在逻辑上在下一条输入行上继续。暗示-x。

  • -l[max-lines], --max-lines[=max-lines] 每个命令行最多使用max-args参数。如果超出大小(请参阅-s选项),则使用少于max-args参数的参数,除非给出了-x选项,在这种情况下xargs将退出。

  • -n max-args, --max-args=max-args

  • -o, --open-tty 在执行命令之前,在子进程中以/dev/tty重新打开stdin。如果希望xargs运行交互式应用程序,这将很有用。

  • -P max-procs, --max-procs=max-procs 一次运行max-procs进程;默认值为1。如果max-procs为0,则xargs一次将运行尽可能多的进程。将-n选项或-L选项与-P一起使用;否则,只有一名高管会被执行。在运行xargs时,可以向其进程发送SIGUSR1信号以增加要同时运行的命令的数量,也可以向SIGUSR2发送以减少该数量。您不能将其增加到实现定义的限制之上(用–show-limits显示)。您不能将其降低到1以下。xargs永不终止其命令;当要求减少时,它仅等待一个以上的现有命令终止,然后再启动另一个命令。
    请注意,由调用的进程来适当地管理对共享资源的并行访问。例如,如果其中有多个尝试打印到标准输出,则输出将以不确定的顺序(很可能是混合的)生成,除非流程以某种方式进行协作以防止这种情况。使用某种锁定方案是防止此类问题的一种方法。通常,使用锁定方案将有助于确保正确的输出,但会降低性能。如果您不想容忍性能差异,只需安排每个过程以生成单独的输出文件(或使用单独的资源)。

  • -p, --interactive 提示用户是否运行每个命令行并从终端读取一行。仅当响应以“ y”或“ Y”开头时,才运行命令行。暗示-t。

  • –process-slot-var=name 在每个正在运行的子进程中,将环境变量名称设置为唯一值。一旦子进程退出,值将被重用。例如,这可以用在基本的负载分配方案中。

  • -r, --no-run-if-empty 如果标准输入不包含任何非空格,请不要运行该命令。通常,即使没有输入,命令也会运行一次。此选项是GNU扩展。

  • -s max-chars, --max-chars=max-chars 每个命令行最多使用最大字符数字符,包括命令和初始参数以及参数字符串末尾的终止null。允许的最大值取决于系统,并且被计算为exec的参数长度限制,环境的大小和2048个字节的净空。如果该值大于128KiB,则将128Kib用作默认值。否则,默认值为最大值。 1KiB是1024字节。xargs自动适应更严格的约束。

  • –show-limits 显示由操作系统,xargs选择的缓冲区大小和-s选项所施加的命令行长度限制。如果您不希望xargs做任何事情,请通过管道从/dev/null输入输入(也许指定–no-run-if-empty)。

  • -t, --verbose 执行之前,在标准错误输出上打印命令行。

  • -x, --exit 打印xargs的版本号并退出。

  • –help 打印xargs选项的摘要并退出。

  • –version 打印xargs的版本号并退出。

示例

$ 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的文件并删除它们,但是比上一个示例更有效(因为我们避免了使用fork(2)和exec(2)来启动rm,并且不需要额外的xargs流程)。

$ cut -d: -f1 < /etc/passwd | sort | xargs echo
# 生成系统上所有用户的紧凑列表

命令退出状态

  • 0 如果成功
  • 123 如果以状态1-125退出命令的任何调用
  • 124 如果命令以状态255退出
  • 125 如果命令被信号杀死
  • 126 如果找不到命令
  • 127 如果找不到命令
  • 1 如果发生其他错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值