我如何获得xargs来显示它生成的命令行而不运行它们?


17

相当数量的linux命令具有空运行选项,该选项将向您显示不执行该命令将要执行的操作。我在xargs手册页上看不到有任何可做的东西,也没有明显的方法来模仿它。

(我的特定用例是对长管道进行故障排除,尽管我确定还有其他情况)

我想念什么吗?


您到底想做什么?
拉胡尔

Answers:


16

echo在命令前面放一个来运行?

$ echo a b c d e | xargs -n2 echo rm
rm a b
rm c d
rm e

5
(当然,这只是一个适用于琐碎情况的简单解决方案。如果参数包含空格或控制字符,则输出将是不明确的。我们需要一些专用工具来明确打印接收到的参数。)
ilkkachu

如果您要尝试空转echo怎么办?:)
mbigras

31

您可能会从-p-t标志中受益。

xargs -pxargs --interactive将打印出要执行的命令,然后在执行命令前提示输入(y / n)进行确认。

% cat list
one
two
three

% ls
list

% cat list | xargs -p -I {} touch {}
touch one ?...y
touch two ?...n
touch three ?...y

% ls
list
one
three

xargs -txargs --verbose将打印每个命令,然后立即执行它:

% cat list | xargs -t -I {} touch {}
touch one 
touch two 
touch three 

% ls
list
one
three
two

1
-p-t选项的绝佳答案。很好的例子。谢谢!
JCotton
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.