1.03.3標準
dateとuptimeの標準出力を、1つのstatus.txtへまとめて上書き保存する。
各コマンドへ個別にリダイレクトを書かない。
Bashで適切な形式はどれか。
× 不正解
{ LIST; } > FILEは現在のシェルでコマンド群をグループ化し、そのグループ全体の標準出力を1か所へリダイレクトする。
詳細解説
誤り
date ; uptime > status.txtリダイレクトはuptimeだけに適用され、dateは端末へ出る。
誤り。;より後ろのuptime単純コマンドにだけ>が属し、dateは元の端末へ出る。
誤り
date > status.txt ; uptimedateだけを保存し、uptimeは端末へ出る。
誤り。dateの結果だけがstatus.txtへ入り、uptimeは保存されない。
正しい
{ date; uptime; } > status.txtグループ全体の標準出力へ1つのリダイレクトを適用する。
正しい。brace groupが1つの複合コマンドとなり、そのfd 1をstatus.txtへ接続する。
誤り
date | uptime > status.txtdateの出力をuptimeの入力へつなぎ、両方の出力を保存する構造ではない。
誤り。uptimeは通常dateのstdinを処理せず、status.txtにはuptimeの出力だけが入る。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp); { printf 'one\n'; printf 'two\n'; } >"$tmp"; cat "$tmp"; rm -f "$tmp"期待される結果
one
two理解のポイント
- brace group
- 末尾;が必要
- redirectをgroup全体へ
確認時の注意
- 確認環境: Bash 5.x / 一時ファイル
基礎のおさらい
brace構文
{の後に空白、閉じる}の前に;または改行が必要で、現在のシェルで実行される。
subshell group
( date; uptime ) > fileでもまとめられるが、括弧内の変数変更やcdは親へ残らない。
問題IDKL-101-480
確認環境Bash 5.x / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告