これは私には意味がありません。
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にリダイレクトされる前に、標準エラーが標準出力から複製されたためです 。