次のコマンドの標準エラー出力はどこへ行く?
./build.sh 2>&1 > out.txt正答
- out.txt に書き込まれる
- 捨てられて、どこにも出ない
- out.txt と画面の両方に出る
- 画面(端末)に表示される
解説
リダイレクトは書かれた順に処理される。まず 2>&1 で「stderr を今の stdout と同じ先へ」とするが、この時点の stdout は端末なので stderr も端末に向く。次に > out.txt で stdout だけが out.txt に変わり、stderr は端末のまま残る。両方を out.txt に入れたいなら > out.txt 2>&1 の順に書く。選択肢 1 はこの正しい順のときの結果であり、順番の違いで結果が変わる点がこの問題の核心である。
参考: www.gnu.org
この問題を含む Linux・シェル のテストを制限時間つきで解く
Linux・シェルクイズへ