次のコマンドがあります。
2>&1 compiler \
--flag1 \
--flag2 \
--option X=10 \
build \
2>&1 | tee -a output.log
この動作が何であるかよくわかりません。重複したり不要な動作ですか?
stderrで印刷するために最初にリダイレクトを使用しました。
>&2 echo "Diagnostic Title"
確認中ですが、少し難しいですが、コマンド仕様の開始と終了は表示されません。
助けてくれてありがとう!
答え1
覚えておくべきこと:
- リダイレクトはコマンドのどこにでも表示できます。
- リダイレクトは左から右に処理されます(ただし、パイプラインが設定された後にのみ)。
これら 2 つのポイントを考慮すると、最初のポイントが stdout が現在指しているエントリに stderr をリダイレクトすることがわかります。 (ここにパイプがあります。)その後、2番目のパイプも同じことをします。標準出力後その間何も変わらなかった、2番目のリダイレクトは実際に重複しています。
また、これは非常に重要な点であり、ここでかなり一般的な質問ソースです。
リダイレクト処理済み今後実際、コマンドは次のように呼び出されます。
sed 'some sed program' myfile > myfile
私のファイルを切り取る最初次に、処理する長さ0の入力ファイルを含むsedを起動します。
これ受け入れられた回答@Kusalanandaが指摘した関連質問はより深くなります。