隱藏後台程序的所有輸出

隱藏後台程序的所有輸出

我的命令中有一堆命令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 & )
$

如果您的commad也產生一些輸出到STDOUT和/或STDERR,請將它們透過管道傳送到/dev/null

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

答案2

這裡另一個答案的稍微簡潔的版本:

(&>/dev/null alertme &)

相關內容