LinuCレベル1 101試験の例題と解説
1.03.3ストリーム、パイプ、リダイレクトの使用
LinuCレベル1 101試験の出題範囲から「1.03.3 ストリーム、パイプ、リダイレクトの使用」についての例題を解いてみます。
例題
以下のコマンドのうち、commandの標準エラー出力(stderr)を標準出力(stdout)にリダイレクトした後、grepコマンドで「error」を含む行を抽出する適切なコマンドを選んでください。
- command 2>1 | grep "error"
- command 2>&1 | grep "error"
- command | grep "error" 2>&1
- command | 2>&1 grep "error"
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「2. command 2>&1 | grep "error"」 です。
Linuxのリダイレクトでは、2>&1の記述によって標準エラー出力(ファイルディスクリプタ2)を標準出力(ファイルディスクリプタ1)に統合できます。その後、| grep "error" により、標準出力と統合されたエラーメッセージをgrepでフィルタリングできます。
次に、例題の各選択肢の詳細について解説をします。
1. command 2>1 | grep "error"
誤りです。
2>1はファイル1に標準エラーをリダイレクトすることを意味するため、標準出力には影響せず、パイプで処理できません。
2. command 2>&1 | grep "error"
正しいです。
標準エラー出力を標準出力に統合し、その出力をgrepに渡します。
3. command | grep "error" 2>&1
誤りです。
上記コマンドはgrepコマンドの標準エラーを標準出力にリダイレクトしています。commandの標準エラー出力をgrepコマンドに渡すことができていません。
4. command | 2>&1 grep "error"
誤りです。
commandの直後に | を記載しているため標準出力がそのまま次のコマンドに渡されています。標準エラー出力を標準出力にリダイレクトできていません。
例題作成者
株式会社デージーネット 経営企画室 小泉麦