![隐藏后台进程的所有输出](https://linux22.com/image/1419224/%E9%9A%90%E8%97%8F%E5%90%8E%E5%8F%B0%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%89%80%E6%9C%89%E8%BE%93%E5%87%BA.png)
我的系统中有一堆命令,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 &)