xargs实用程序允许您从标准输入构建和执行命令。它通常通过管道与其他命令结合使用。使用xargs,可以将标准输入作为参数提供给命令行实用程序,例如mkdir和rm。如何使用xargs命令xargs从标准输入读取参数(以空格或换行符分隔)并使用输入作为命令的参数来执行指定的命令。如果未提供命令,则默认为/bin/echo。xargs命令的语法如下:xargs[OPTIONS][COMMAND[initial-arguments]]使用xargs的最基本示例是将几个由空格分隔的字符串传送到xargs并运行一个使用这些字符串作为参数的命令。命令。echo"文件1文件2文件3"|xargstouch在上面的示例中,标准输入接下来通过管道传输到xargs并且为每个参数运行touch命令,创建三个文件。这和你运行时是一样的:touchfile1file2file3如何在执行命令前查看命令并提示用户在终端打印命令,请使用-t(--verbose)选项:echo"file1file2文件3"|xargs-ttouchtouchfile1file2file3如果你想在执行每个命令之前得到是否运行的提示,使用-p(--interactive)选项:echo"file1file2file3"|xargs-ptouchtypeyorY确认运行命令:touchfile1file2file3?...y这个选项在执行破坏性命令的时候非常有用,比如rm,这个命令一定不能在服务器上运行如何限制参数数量默认情况下,传递给命令的参数数量由系统限制决定。n(--max-args)选项指定传递给给定命令的参数数量。xargs根据需要多次运行指定的命令,直到所有参数都用完。在下面的示例中,从标准输入读取的参数数量限制为1。echo"文件1文件2文件3"|xargs-n1-ttouch从下面的详细输出可以看出,touch命令是针对每个参数单独执行的:touchfile1touchfile2touchfile3如何运行多个命令要使用xargs运行多个命令,请使用-i选项。它通过在-i选项之后定义一个replace-str来工作,并且所有出现的replace-str都被传递给xargs的参数替换。以下xargs示例将运行两个命令,首先使用touch创建文件,然后使用ls命令列出文件:echo"file1file2file3"|xargs-t-I%sh-c'{touch%;ls-l%;}'-rw-r--r--1linuxize用户0May611:54file1-rw-r--r--1linuxize用户0May611:54file2-rw-r--r--1linuxizeusers0May611:54file3需要注意的是MacOS上没有-i参数,只有-I,用法类似。Replace-str的一个常见选择是%。但是,您可以使用另一个占位符,例如ARGS:echo"file1file2file3"|xargs-t-IARGSsh-c'{touchARGS;ls-l参数;}'如何指定分隔符使用-d(--delimiter)选项设置自定义分隔符,它可以是单个字符或以它开头的转义序列。接下来使用以下示例作为分隔符:echo"file1;file2;file3"|xargs-d\;-ttouchtouchfile1file2file3如何从文件中读取项目xargs命令也可以从文件中读取而不是标准输入Take项目。为此,请使用-a(--arg-file)选项后跟文件名。在下面的示例中,xargs命令将读取ips.txt文件并ping每个IP地址。ips.txt8.8.8.81.1.1.1后面跟着-l1选项,它指示xargs一次读取一行。如果省略此选项,xargs会将所有ip传递给单个ping命令。xargs-t-L1-aips.txtping-c1ping-c18.8.8.8PING8.8.8.8(8.8.8.8)56(84)字节的数据。来自8.8.8.8的64字节:icmp_seq=1ttl=50time=68.1ms...ping-c11.1.1.1PING1.1.1.1(1.1.1.1)56(84)字节的数据。来自1.1.1.1的64字节:icmp_seq=1ttl=59time=21.4msusedxargs和findxargs最常与find命令结合使用。您可以使用find搜索特定文件,然后使用xargs对这些文件执行操作。为避免文件名包含换行符或其他特殊字符的问题,请始终使用find-print0选项,这会导致find打印完整的文件名后跟一个空字符。xargs可以使用-0,(-null)选项正确解释此输出。在下面的示例中,find将打印/var/www/中所有文件的完整名称。缓存目录和xargs会将文件路径传递给rm命令:find/var/www/.cache-typef-print0|xargs-0rm-f使用xargs修剪空白字符xargs也可以作为两个去边空格的工具。只需将一个字符串传递给xargs命令,它就会进行修剪:echo"Longline"|xargsLongline这在shell脚本中比较字符串时非常有用。#!/bin/bashVAR1="chasays"VAR2="chasays"if[["$VAR1"=="$VAR2"]];thenecho"Stringsareequal."elseecho"Stringsarenotequal."fi##UsingxargstotrimVAR1if[[$(echo"$VAR1"|xargs)=="$VAR2"]];然后回显“字符串相等”。elseecho"字符串不相等。"fiStringsarenotequal.Stringsareequal.字符串不相等。字符串相等。总结xargs是Linux上的命令行实用程序,可以与其他命令一起使用以产生惊人的结果。本文由多发平台ArtiPub自动发布
