これは私には意味がありません。
wibble > /dev/null 2>&1
このようなものであれば、もっと理にかなっていると思います:
wibble 2>&1 > /dev/null
言い換えれば
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
コマンドリダイレクトの順序の背後にある考え方は何ですかxxx > /dev/null 2>1
?
承認された回答:
リダイレクトは左から右に処理されます。もしそうなら
2>&1 1> /dev/null
最初のリダイレクトにより、stderr
が作成されます stdout
のストリームを指す その時を指します(これは本質的にあなたのttyです)。 stderr
にはなりません stdout
のエイリアス 。
次に、stdout
ビットバケットにリダイレクトされます。 stdout
リダイレクトは以前のstderr
には影響しません リダイレクト。 stderr
まだあなたのttyを指します。
だから:
ls file_that_doesnt_exist 2>&1 1> /dev/null
端末にエラーメッセージのみを出力します。
bash
リダイレクトのドキュメントページには、これが明示的に記載されています:
リダイレクトの順序が重要であることに注意してください。たとえば、コマンド
ls > dirlist 2>&1
コマンド
が、標準出力と標準エラーの両方をファイルdirlistに送信します。
ls 2>&1 > dirlist
標準出力のみをファイルdirlistに転送します。これは、標準出力がdirlistにリダイレクトされる前に、標準エラーが標準出力から複製されたためです 。