如何在终端中运行后台命令时隐藏 PID 和退出状态

如何在终端中运行后台命令时隐藏 PID 和退出状态

我有一个有一百多行的文本文件,每一行都是一个命令:

echo foo
...
echo bar

我正在寻找一个我可以从终端调用该命令,该终端将从与指定行号关联的所述文件运行命令。我不希望终端显示通常与终端中运行的命令关联的与系统相关的内容。

例如,如果我使用类似的东西xdotool type "$(sed -n 1p file)" &(请注意,我愿意接受更优雅的命令),

我得到以下终端输出:

[1] 9531
user@host:~$ echo foo

我想压制这条[1] 9531线。但请记住,我确实这样做不是想要压制回声栏行,因为这是我有机会验证我是否要执行所需命令而不是其他命令的地方。我也不希望命令提示符左侧显示任何文本。

然后我点击了<进入> 我的键盘键并获取:

foo
[1]+  Done                    xdotool type "$(sed -n 1p file)" &
user@host:~$

我想压制这条[1]+ Done...线。

如何抑制这两条线的终端输出?我已经尝试了所有我能找到的重定向方案,但没有任何乐趣。

答案1

为了简化起见,您所看到的是在后台运行命令(&符号)时的正常输出。如果运行这个简化版本,人们可以看到相同的结果:

ls &

为了避免看到该输出,您可以用括号将命令括起来:

(ls &)

或者,就你而言

(xdotool type "$(sed -n 1p file)" &)

在您的特定情况下,您似乎并不真正需要&,因此从命令中删除它可能会更容易:

xdotool type "$(sed -n 1p file)"

聚苯乙烯

如果您想从头到尾顺序运行所有文件,您可能更喜欢执行类似的操作

x=0

然后,对于每一行,运行

x=$((x+1)); (xdotool type "$(sed -n "${x}p" file)" &)

这样就不需要每次都修改号码了。

另请看一下这个: 如何以交互方式运行文件中的所有命令

相关内容