GNU/Linux >> Linux の 問題 >  >> Linux

Stderrを/dev/ nullにリダイレクトするのはなぜこのように行われるのですか?

これは私には意味がありません。

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にリダイレクトされる前に、標準エラーが標準出力から複製されたためです


Linux
  1. Linux の /dev/zero および /dev/null ファイルとは

  2. /dev/random または /dev/urandom を base64 でエンコードする方法は?

  3. /dev/zero から /dev/null への DD ...実際に何が起こるか

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  3. /dev/null に書き込む仮想ブロック デバイスを作成します。

  1. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  2. シェル:stdout を /dev/null にリダイレクトし、stderr を stdout にリダイレクトします

  3. screen 端末 '/dev/pts/0' を開けません - 確認してください