これは私には理解できません。
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
?
答え1
リダイレクトは左から右に処理されます。そうすれば
2>&1 1> /dev/null
最初のリダイレクトは、stderr
当時指しているストリーム(デフォルトではtty)を指します。エイリアスはstdout
作成されません。stderr
stdout
次にstdout
Bitbucketにリダイレクトします。リダイレクトはstdout
以前のリダイレクトには影響しませんstderr
。stderr
まだttyを参照しています。
だから:
ls file_that_doesnt_exist 2>&1 1> /dev/null
端末にエラーメッセージが表示されます。
これbash
リダイレクトドキュメントページには、以下が明示的に記載されています。
リダイレクトの順序が重要です。たとえば、次のコマンドは
ls > dirlist 2>&1
標準出力と標準エラーをファイルのディレクトリリストとして指定し、コマンドは
ls 2>&1 > dirlist
ファイルのディレクトリリストにのみ標準出力を指定します。標準エラーは、ディレクトリリストにリダイレクトされる前に標準出力からコピーされるためです。。