隐藏后台进程的所有输出

asf*_*ows 7 linux zsh shell

我有一堆命令在zshrc后台调用另一个命令。后台命令是文本转语音程序的别名(当测试套件和补丁等进程完成时,我用它来给我音频提示)。

它目前被这样调用:

alert "Message for this current task" &
Run Code Online (Sandbox Code Playgroud)

很简单。

但是,当我使用这种格式时,我得到以下输出:

$ alert "Foobar" &
[1] 85072
$
[1]  + done       alert "Foobar"
$
Run Code Online (Sandbox Code Playgroud)

我想抑制 pid 和done消息的输出。我怎么做?

我试过了,alert "Foobar" > /dev/null &但这只会将警报的输出传送到 devnull。

我试过了,alert "Foobar" & > /dev/null但这做了我不完全理解的意想不到的坏事。

如何&在“安静”模式下使用?

mpy*_*mpy 13

您可以使用子外壳来摆脱作业控制消息:

$ alias alertme="xmessage Alert!"
$ ( alertme & )
$
Run Code Online (Sandbox Code Playgroud)

如果您的命令还向 STDOUT 和/或 STDERR 生成一些输出,请将它们通过管道传输到/dev/null

$ ( alertme > /dev/null 2>&1 & )
Run Code Online (Sandbox Code Playgroud)