Linux・シェル4 択難易度 応用

次のコマンドの標準エラー出力はどこへ行く?

./build.sh 2>&1 > out.txt

正答

  1. out.txt に書き込まれる
  2. 捨てられて、どこにも出ない
  3. out.txt と画面の両方に出る
  4. 画面(端末)に表示される

解説

リダイレクトは書かれた順に処理される。まず 2>&1 で「stderr を今の stdout と同じ先へ」とするが、この時点の stdout は端末なので stderr も端末に向く。次に > out.txt で stdout だけが out.txt に変わり、stderr は端末のまま残る。両方を out.txt に入れたいなら > out.txt 2>&1 の順に書く。選択肢 1 はこの正しい順のときの結果であり、順番の違いで結果が変わる点がこの問題の核心である。

参考: www.gnu.org

redirectstderr

この問題を含む Linux・シェル のテストを制限時間つきで解く

Linux・シェルクイズへ