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

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

私のシステムには、バックグラウンドで別のコマンドを呼び出すコマンドがたくさんあります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

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

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

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

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

答え2

別の回答の少しすっきりしたバージョンを次に示します。

(&>/dev/null alertme &)

関連情報