web-dev-qa-db-ja.com

バックグラウンドプロセスからのすべての出力を非表示にする

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を試しましたが、それは私が完全には理解していない予期しない悪いことをしました。

'quiet'モードで&を使用するにはどうすればよいですか?

3
asfallows

サブシェルを使用して、ジョブ制御メッセージを取り除くことができます。

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

コンマがSTDOUTやSTDERRへの出力も生成する場合は、それらを/dev/nullにパイプします。

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

ここに別の答えの少しきちんとしたバージョン:

(&>/dev/null alertme &)
1
Tom Hale