如何让 xargs 在不运行它们的情况下向我显示它生成的命令行?

And*_*rew 33 xargs

相当多的 linux 命令都有一个试运行选项,它会告诉你他们将要做什么而不做。我在 xargs 手册页中看不到任何内容,也没有明显的方法来模拟它。

(我的具体用例是对长管道进行故障排除,但我确定还有其他用例)

我错过了什么吗?

小智 61

您可能会受益于-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
Run Code Online (Sandbox Code Playgroud)

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

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

% ls
list
one
three
two
Run Code Online (Sandbox Code Playgroud)

  • 带有`-p`和`-t`选项的极好答案。很好的例子。谢谢你! (7认同)

ilk*_*chu 20

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

$ echo a b c d e | xargs -n2 echo rm
rm a b
rm c d
rm e
Run Code Online (Sandbox Code Playgroud)

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