1.03.3基礎
list-servicesの標準出力をgrepへ渡し、activeを含む行だけを表示する。
一時ファイルは作らない。
適切なコマンドはどれか。
× 不正解
|は左コマンドの標準出力を右コマンドの標準入力へ接続し、ストリームを直接フィルタへ渡す。
詳細解説
誤り
list-services > grep activegrepというファイルへ出力し、activeを別引数として扱う形にならない。
誤り。>の直後は出力ファイル名としてgrepが解釈され、grepプロセスを起動しない。
誤り
list-services < grep activegrepというファイルを入力にしようとし、出力接続にならない。
誤り。<の直後は入力ファイル名で、list-servicesの結果をgrepへ渡す構文ではない。
誤り
list-services ; grep active2コマンドを順次実行するが、データを接続しない。
誤り。grep activeは独自のstdinを持ち、list-servicesが端末へ出したデータを読み戻せない。
正しい
list-services | grep active左の標準出力を右の標準入力へパイプで接続する。
正しい。パイプがlist-servicesのfd 1とgrepのfd 0を接続し、行フィルタへ直接流す。
実際に確かめる
一時的な検証環境で実行できる例です。
printf 'active api\ninactive old\nactive db\n' | grep '^active'期待される結果
active api
active db理解のポイント
- pipeはstdout→stdin
- 一時file不要
- stderrは既定でpipe外
確認時の注意
- 確認環境: POSIX shell / grep / 生成した標準入力
基礎のおさらい
並行動作
パイプラインの各プロセスは同時に動作でき、カーネルのパイプバッファを介してデータを渡す。
標準エラー
単純な|は左のstderrを接続しないため、必要なら2>&1などで明示的に合流させる。
問題IDKL-101-473
確認環境POSIX shell / grep / 生成した標準入力
最終技術確認2026-08-13
誤り・権利侵害を報告