bash スクリプトで /dev/null に出力すると何が達成されますか?

bash スクリプトで /dev/null に出力すると何が達成されますか?

多くの場合、if ステートメントで次のような構文を使用する小さな bash スクリプトに遭遇します。

some command > /dev/null 2>&1

/dev/nullこのように出力する目的と2>&1意味は何ですか?

常に動作しているように見えますが、何をしているのかを知りたいです。

答え1

>/dev/nullコマンドの標準出力をヌルデバイスにリダイレクトします。ヌルデバイスは、書き込まれた情報を破棄する特別なデバイスです。

2>&1標準エラーストリームを標準出力ストリーム(stderr = 2、stdout = 1)にリダイレクトします。これは標準エラーストリームを取得し、その時点で標準出力と同じ場所を指すことに注意してください。これが順序の理由です。>/some/where 2>&1最初にstdoutをどこかにポイントし、それから最終的に両方のストリームを結合したい場合は、stderr を同じ場所にポイントします。

実際には、コマンドからの出力 (stdout と stderr の両方) が表示されないようにします。コマンドの出力を気にしない場合に使用します。

答え2

STDIN は 0、STDOUT は 1、STDERR は 2 で表されます。

/dev/nullビットバケット: 必要のないものをすべて捨てる場所です。


したがって、STDOUT はビット バケット (ゴミ箱) にリダイレクトされ、STDERR は STDOUT が配置されている場所 (ビット バケット) にリダイレクトされます。


次のようなこともできます:

>/dev/null 2>/dev/null

関連情報