如何在每个xargs命令之间rest1秒?

例如,如果我执行

ps aux | awk '{print $1}' | xargs -I {} echo {} 

我想让shell在每个echo之间hibernate1秒钟。

我怎样才能改变我的shell命令?

您可以使用以下语法:

 ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }' 

虽然要小心空格和分号。 括号之间的每个命令后,需要分号(即使在最后一个之后)。

用一些名为sleepecho shell脚本替换echo

  #!/bin/sh sleep 1 echo $* 

如果你的awk支持它:

 ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q 

或者完全忽略awkxargs

 ps aux | while read -r user rest; echo $user sleep 1; done