1.03.3基礎
buildの標準出力をbuild.outへ、標準エラーをbuild.errへ、それぞれ上書き保存する。
適切なコマンドはどれか。
× 不正解
> build.outでstdout、2> build.errでstderrを独立したファイルへ接続する。
詳細解説
誤り
build > build.out 2>&1両方をbuild.outへまとめる。
誤り。fd 2をfd 1へ複製するためbuild.errは作られず、診断もbuild.outへ混ざる。
誤り
build 2> build.out > build.err標準エラーと標準出力の保存先が要求と逆である。
誤り。2>の対象がbuild.out、>の対象がbuild.errで、指定ファイル名との対応が逆になる。
正しい
build > build.out 2> build.errstdoutとstderrへ異なるファイルを割り当てる。
正しい。2つの独立したopenを使い、通常結果と診断を別ファイルへ保存する。
誤り
build < build.out 2< build.err両ファイルを入力側として開こうとする。
誤り。<は読み込み方向で、buildの出力ストリームを保存する指定ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); sh -c 'echo out; echo err >&2' >"$tmp/o" 2>"$tmp/e"; printf '%s/%s\n' "$(cat "$tmp/o")" "$(cat "$tmp/e")"; rm -rf "$tmp"期待される結果
out/err理解のポイント
- 1>はstdout
- 2>はstderr
- 別々に指定可能
確認時の注意
- 確認環境: POSIX shell / 一時ディレクトリ
基礎のおさらい
別ファイルの利点
通常結果を機械処理しつつ、診断だけ別途確認できる。
終了状態
出力の保存先を変えても、コマンドの終了状態自体は通常そのまま呼び出し元へ返る。
問題IDKL-101-472
確認環境POSIX shell / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告