隐藏后台进程的所有输出

隐藏后台进程的所有输出

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

目前它的调用方式如下:

alert "Message for this current task" &

非常简单。

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

$ alert "Foobar" &
[1] 85072
$
[1]  + done       alert "Foobar"
$

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

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

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

如何&在‘安静’模式下使用?

答案1

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

$ alias alertme="xmessage Alert!"
$ ( alertme & )
$

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

$ ( alertme > /dev/null 2>&1 & )

答案2

这里是另一个答案的稍微简洁一些的版本:

(&>/dev/null alertme &)

相关内容