VPS服务器Linux Xargs 命令的10个实用示例
VPS服务器LinuxXargs命令的10个实用示例当我们将xargs命令与其他命令结合使用时,它非常有用。本文通过几个简单的示例解释了xargs命令的用法。这些示例将帮助您了解xargs命令如何工作的基础知识。1.Xargs基本示例xargs命令(默认情况下)需要来自标准输入的输入,并在输入上执行/bin/echo命令。以下是在没有任何参数的情况下执行xargs或在不与任何其他命令组合的情况下执行它时会发生的情况。当您键入不带任何参数的xargs时,它会提示您通过stdin输入输入:$xargsHi,WelcometoTGS.键入内容后,按ctrl+d,这将在标准输出上将字符串回显给您,如下所示。$xargsHi,WelcometoTGS.Hi,WelcometoTGS.2.使用-d选项指定分隔符可以应用分隔符,以便使用xargs中的-d选项按字面意思获取输入中的每个字符。在前面的示例中,即使输入在‘Hi’之后包含一个\\n(换行符),但回显的输出不包含换行符‘\\n’。因此,前面示例中的输出被合并为一行。在以下示例中,当您使用-d\\n时,它将在输出中保留换行符分隔符,并完全按照输入的方式显示输出。$xargs-d\\nHi,WelcometoTGS.键入上述内容后,按ctrl+d,这将在stdout上将字符串回显给您,如下所示。但是,这一次它将保留换行符。$xargs-d\\nHi,WelcometoTGS.Hi,WelcometoTGS.3.使用-n选项限制每行输出默认情况下,如前所述,xargs显示其标准输入的任何内容,如下所示。$echoabcdef|xargsabcdef但是,可以使用-n选项将xargs命令的输出拆分为多行。在以下示例中,我们使用了-n3,它将在xargs输出中每行仅显示3个项目。$echoabcdef|xargs-n3abcdef同样,您还可以使用-n2将输出拆分为每行2个项目,如下所示。$echoabcdef|xargs-n2abcdef4.使用-p选项在执行前提示用户使用选项-p,您可以确认用户执行xargs命令。考虑前面的示例,如果我们想确认用户每次执行/bin/echo命令,请使用-p选项和-n选项,如下所示。$echoabcdef|xargs-p-n3/bin/echoabc?...y/bin/echodef?...abcydef在下面的输出中,我对所有echo输出说“n”。因此,xargs没有执行任何操作。$echoabcdef|xargs-p-n/bin/echoabc?...n/bin/echodef?...n/bin/echo?...n注意:当您将xargs与诸如rm之类的破坏性命令结合使用时,这很有帮助。在这些情况下,您可能想看看xargs做了什么。5.使用-r选项避免空白输入的默认/bin/echo当有空白输入时(即xargs命令没有输入),它将执行/bin/echo命令,该命令将显示一个新行,如下所示。$xargs-p输入“xargs-p”后按ctrl-d,这将表明它执行了/bin/echo,如下所示。$xargs-p/bin/echo?...y$6.使用-t选项打印命令和输出在以下示例中,键入“abcd”作为xargs-t命令的输入。$xargs-tABCD按ctrl-d完成上面的xargs-t命令,在显示输出之前会显示xargs真正执行的命令。在这种情况下,xargs执行的命令是“/bin/echoabcd”,此处显示。$xargs-tABCD/bin/echoabcdABCD7.结合Xargs和Find命令它是xargs命令最重要的用法之一。当您需要查找某种类型的文件并对它们执行某些操作时(最流行的是删除操作)。当我们与其他命令结合使用时,xargs命令非常有效。在以下示例中,我们获取find命令的输出,并将其作为输入传递给xargs命令。但是,我们不是执行默认的/bin/echo命令,而是指示xargs命令对输入执行rm-rm命令。因此,在本例中,find命令的输出是所有带有*.c扩展名的文件,作为xargs命令的输入,该命令反过来对所有*.c文件执行“rm-rf”命令.$lsone.cone.htwo.ctwo.h$find.-name"*.c"|xargsrm-rf$lsone.htwo.h8.删除文件名中有空格的文件所以我们看到,尽管对该目录中的.c文件运行了rm命令,但文件“TheGeekStuff.c”并没有被删除。这是因为此文件的名称中包含空格字符。如以下示例所示,它删除了除一个之外的所有扩展名为*.c的文件。即文件名中有空格的文件(即“TheGeekStuff.c”)没有被rm命令删除。$touch"TheGeekStuff.c"$lsone.cone.htwo.ctwo.hTheGeekStuff.c$find.-name"*.c"|xargsrm-rf$lsone.htwo.hTheGeekStuff.c在这种情况下,使用find命令的-print0选项和xargs命令的-0选项来删除文件,包括文件名中有空格的文件,如下所示。$lsone.cone.htwo.ctwo.hTheGeekStuff.c$find.-name"*.c"-print0|xargs-0rm-rf$lsone.htwo.h9.使用Cshow-limits选项在xargs上显示系统限制请参见下面的示例:以下示例显示了操作系统设置的所有限制,这些限制将对xargs命令的工作方式产生影响。$xargs--show-limitsYourenvironmentvariablestakeup1203bytesPOSIXupperlimitonargumentlength(thissystem):2093901POSIXsmallestallowableupperlimitonargumentlength(allsystems):4096Maximumlengthofcommandwecouldactuallyuse:2092698Sizeofcommandbufferweareactuallyusing:131072Executionofxargswillcontinuenow,anditwilltrytoreaditsinputandruncommands;ifthisisnotwhatyouwantedtohappen,pleasetypetheend-of-filekeystroke.Warning:/bin/echowillberunatleastonce.Ifyoudonotwantthattohappen,thenpresstheinterruptkeystroke10.结合Xargs和Grep命令xargs命令可以与grep命令结合使用,以从find命令的搜索结果中过滤特定文件。在以下示例中,find命令提供了所有.c文件作为xargs的输入。xargs命令执行grep命令以查找包含字符串“stdlib.h”的所有文件(在find命令提供的文件中)。$find.-name'*.c'|xargsgrep'stdlib.h'./tgsthreads.c:#include./valgrind.c:#include./direntry.c:#include./xvirus.c:#include./temp.c:#include
一诺网络香港免备案专区,提供「香港增强云服务器」和「香港特惠云服务器」两种类型的高可用弹性计算服务,搭载新一代英特尔®至强®铂金处理器,接入CN2低延时高速回国带宽线路,网络访问顺滑、流畅。机房网络架构采用了BGP协议的解决方案可提供多线路互联融合网络,使得不同网络运营商线路的用户都能通过最佳路由实现快速访问。香港云服务器低至29元/月,购买链接:https://www.enuoidc.com/vps.html?typeid=2