web-dev-qa-db-ja.com

/ dev / nullへの出力はbashスクリプトで何を達成しますか?

Ifステートメントでこの種の構文を使用する小さなbashスクリプトに遭遇することがよくあります。

some command > /dev/null 2>&1

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

常に機能しているようですが、それが何をしているのか知りたいです。

130
javanix

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

2>&1は、標準エラーストリームを標準出力ストリームにリダイレクトします(stderr = 2、stdout = 1)。これは標準エラーストリームを取得し、その時点で標準出力と同じ場所を指すことに注意してください。これが>/some/where 2>&1の順序の理由です。最初にstdoutをどこかに向け、最後に両方のストリームを組み合わせたい場合はthen stderrを同じ場所に向ける必要があるためです。

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

174
João Pinto

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

/ dev/nullはビットバケットです。不要なものをダンプする場所です。


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


これも行うことができます:

>/dev/null 2>/dev/null
67
Sid