我想了解所使用的 xargs manRampion的代码:

screen -t man /bin/sh -c 'xargs man || read'

由于Rampion:我们不需要猫!

我们为什么需要 xargs 在命令?

我明白的 xargs -部分如下

  1. 猫什么xargs
  2. xargs使得一个名单的人的命令

我有一个想法,xargs使得一个名单的命令。例如,

find . -type f -print0 | xargs -0 grep masi 

相同的一系列命令:

find fileA AND grep masi in it 
find fileB AND grep masi in it 
           and so on for fileC, fileD, ...
有帮助吗?

解决方案

不,我不 cat 什么都没有。我的猫什么的输入我得到之后,我运行命令。 cat 实际上是多余的,因此让我们忽略它。

xargs man 等待用户输入。这是必要的。由于在脚本,你抓住那,我不能贴在论点的人,直至后我创造的窗口。因此命令中运行的窗口,需要等待我去给它的东西之前,它试图运行的人。

如果我们刚刚跑了 screen /bin/sh -d 'man || read', 它总是抱怨"什么手册做你想要的吗"因为我们从来没有告诉它。

其他提示

xargs收集的参数标准输入和执行该命令给予这些论点。

那只猫是在等待的东西可以输入,然后xargs运人与输入。

xargs是有用的,如果你有一个很大的文件的过程中,我经常使用这与输出从找到。xargs会的东西,因为许多论点,因为它可以到的命令行。
这是伟大的在做喜欢的东西

find . -name '*.o' -print | xargs rm

cat 命令不作没有什么;它的运作标准输入,直到它被告知,将输入结束。作为Rampion注意到, cat 命令是不必要的,但它是操作在其隐含的输入(标准输入),不上什么都没有。

xargs 命令读的输出 cat, 和团体的信息纳入参数 man 命令指定为其(仅)的论点。当它达到一个限制(可命令行),它将执行 man 命令。

find ... -print0 | xargs -0 ... 语交的文件名称中包含尴尬的人物,如坯料、标签和换行。的 find 命令指纹每个文件随后通过ASCII NUL('\0');这是两个人物之一,不能出现在一个简单的文件名其他被'/'(其中出现的路径的名字,当然,但不是简单的文件名称)。它没有直接等同的序列提供; xargs 组收集的文件名成一个单一参数表,到一个大的限制。如果名字是短够了(他们通常都),则会有较少的执行 grep 不是有文件的名称。

注, grep 只有打印的文件名称的材料发现,如果它拥有的多个文件搜索--或者如果它支持一个选项,因此,它总是打印的文件名和选择是使用:'-H'是一个GNU扩展到 grep 不这一点。便携式方法,以确保文件的名字始终显示的是名单 /dev/null 作为第一个文件(因此,'xargs grep something /dev/null');它并不需要很长时间搜索 /dev/null.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top