Unix提示:使用xargs安排数据和运行命令

许多Unix用户只在一些熟悉的上下文中使用xargs命令,例如在找到特定文件后,将其与find命令一起使用,对其进行处理。但是它可以用于在命令行上执行许多其他可能会让您感到惊讶的事情。

Xargs通常用于接收由其他命令生成的输入,然后使用它创建和运行其他命令。这可以节省很多时间。例如,当与find命令一起使用时,xargs允许您创建命令以某种方式操作所找到的文件。您可能希望找到特定文件夹中以.pl或.sh结尾的所有文件,并使它们可执行。或者您可能想删除所有以。old结尾的文件。通过将xargs命令附加到find命令,这些任务非常容易完成。下面是一些简单的例子:

发现美元。-name "*.pl" | xargs chmod 750 $查找。- name”*。老“| xargs rm

在下面的命令中,我们将查找所有引用标准IO库stdio.h的C源代码文件

发现美元。- name ' * . c | xargs grep stdio . h。/ libcaca-0.99.beta19 / src / aafire.c: # include < stdio . h >。/ libcaca-0.99.beta19 / src / aafire.c: # include < stdio . h >。/ libcaca-0.99.beta19 / src / cacaclock.c: # include < stdio . h >。/ libcaca-0.99.beta19 / src / cacaserver.c: # include < stdio . h >。/ libcaca-0.99.beta19 / src / cacademo.c: # include < stdio . h >。/ libcaca-0.99.beta19 / src / cacadraw.c: # include < stdio . h >

这些都是xargs相当常见的用法。与此同时,xargs还有许多其他用途,这使它变得更加通用。让我们仔细看看它是如何工作的,它可以做什么。

首先,xarg命令的基本功能非常简单。它会与你扔进去的东西相呼应。从某种意义上说,它与echo没有太大区别,只是内容需要重定向到echo,而不是作为参数显示,或者可以在键入xargs和按control-d之前提供。首先,最简单的形式。

$ echo a b c b c $ echo a b c

显然,在上面的例子中没有得到多少。管道和xargs的使用只会使命令变得更复杂和更耗时。但是该命令演示了xargs如何获取传递给它的每个字符串并重复它。

在下面的例子中,我们只需要输入xargs,然后按回车键。然后我们输入一些文本。我在文本后面输入control-d并按下回车键。当然,您不会看到control-d (^d),但我在下面包含了它,以显示它是在哪里输入的。xargs命令再次显示文本。您可以输入任意多行文本,并且所有文本都将在control-d之后重复。

你好,世界再见!你好,世界再见!

以类似的方式,如果您需要将简单文件的内容显示在单行中(基本上是将文件压扁),xargs将符合您的要求。

首先,文件:

$ cat数据12 3 4 5 6 7 8 9 10 11 12 13 14 15

然后用xargs将其内容扁平化:

$ cat data | xargs 12 3 4 5 6 7 8 9 10 11 12 13 14 15

您还可以通过压缩给定数量的行来查看数据。在本例中,我们将文件中的每5行显示为一行。

$ cat data | xargs -l5 12 3 4 5 6 7 8 9 10 11 12 13 14 15

这也适用于由大括号展开生成的数字。在本例中,我们使用echo命令和花括号中表示的值范围将1到100之间的数字提供给xargs,然后一次将它们分组5个。

$回声{1 . .100} | xargs - n 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

在最后一个命令中,我们将数据文件中的每一组三行相加,然后显示总和。

$ cat data|tr ' ' '\n'|xargs -l3|tr ' ' '+'|bc 6 15 24 33 42

xargs命令可以方便地执行许多数据操作任务。虽然它主要用于构造新命令,因此您不必手动执行这些操作,但它也允许您对数据进行一些可能会派上用场的不同寻常的重新排列。

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对自己最关心的话题发表评论。

版权©2016足球竞彩网下载

2021年IT薪资调查:结果在