1.03.3基礎
validateの標準エラーだけをerrors.logへ上書き保存する。
標準出力は従来どおり端末へ表示する。
適切なリダイレクトはどれか。
× 不正解
2> FILEは標準エラーのファイル記述子2をFILEへリダイレクトし、標準出力の接続は変更しない。
詳細解説
誤り
validate > errors.log標準出力を保存し、標準エラーは端末へ残す。
誤り。正常結果がerrors.logへ入り、保存したい診断は端末へ残る。
誤り
validate >> errors.log標準出力を追記する。
誤り。標準出力側である点に加え、既存ファイルへ追記するため要求と2点異なる。
誤り
validate < errors.logerrors.logを標準入力として渡す。
誤り。入力接続を変えるだけで、validateが出す診断の行き先を変更しない。
正しい
validate 2> errors.logファイル記述子2の標準エラーだけをファイルへ接続する。
正しい。2>がstderrだけをerrors.logへ接続し、stdoutは継承した端末へ出す。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp); sh -c 'printf out; printf err >&2' 2>"$tmp"; printf ' file='; cat "$tmp"; rm -f "$tmp"期待される結果
端末側にout file=err理解のポイント
- fd 2はstderr
- 2>はstderr上書き
- stdoutは別stream
確認時の注意
- 確認環境: POSIX shell / 一時ファイル
基礎のおさらい
ストリーム分離
通常結果と診断を別ストリームにすることで、パイプ処理と人向けエラー表示を両立できる。
明示番号
1>fileは>fileと同じstdout指定で、2>fileがstderrを明示する。
問題IDKL-101-469
確認環境POSIX shell / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告