题
我想了解所使用的 xargs man
在 Rampion的代码:
screen -t man /bin/sh -c 'xargs man || read'
由于Rampion:我们不需要猫!
我们为什么需要 xargs
在命令?
我明白的 xargs
-部分如下
- 猫什么xargs
- 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
.