LinuCレベル1 Version 4.0 101試験の例題と解説
103.4 ストリーム、パイプ、リダイレクトの使用
■トピックの概要
このトピックの内容は以下の通りです。
<103.4 ストリーム、パイプ、リダイレクトの使用>
重要度 4
<説明>
テキストデータを効果的に処理するためにストリームのリダイレクトや接続ができる。この作業には標準入力、標準出力、標準エラー出力へのリダイレクト、あるコマンドの出力を別のコマンドの入力にパイプする、あるコマンドの出力を別のコマンドの引数として使用する、出力を標準出力とファイルの両方に送るといったことが含まれる。
<主要な知識範囲>
・標準入力、標準出力、標準エラー出力をリダイレクトする
・あるコマンドの出力を別のコマンドの入力にパイプする
・あるコマンドの出力を別のコマンドの引数として使用する
・出力を標準出力とファイルの両方に送る
<重要なファイル、用語、ユーティリティ>
・tee
・xargs
■例題
リダイレクトについて適切な説明を選択してください。
1.「cat < test.txt」は、標準出力をtest.txtに書き込んでいる
2.「rm a.txt 2> test.txt」は、標準入力をtest.txtに書き込んでいる
3.「echo hello > test.txt」は、標準エラー出力をtest.txtに書き込んでいる
4.「ls > test.txt」は、標準出力をtest.txtに書き込んでいる
※この例題は実際の試験問題とは異なります。
解答と解説
答えは「4.「ls > test.txt」は、標準出力をtest.txtに書き込んでいる」です。
「>」は標準出力の切り替えを意味し、「<」は標準入力の切り替えを意味します。
「コマンド > ファイル」を実行すると、コマンドが標準出力に出力したデータを、ディスプレイに出力するのではなく、ファイルに出力する動きになります。
この時、ファイルが存在しない場合はファイルを作成し、ファイルが存在する場合、データを上書きします。
一方で、「コマンド >> ファイル」を実行すると、データの追記が行われます。
また「コマンド < ファイル」を実行すると、入力をキーボードからファイルに切り替えます。つまりファイルを読み込んでコマンドに入力として渡す動きになります。
その他の使い方として、以下が挙げられます。
「コマンド 2> ファイル」を実行すると、標準エラー出力をファイルに出力します。
「コマンド > ファイル 2>&1」を実行すると、標準出力・標準エラー出力ともにファイルに出力します。
最後に例題に沿って動きを解説します。
1.「cat < test.txt」
このコマンドは、標準入力の入力元をキーボードからファイルに切り替えています。つまりtext.txtの内容を読みだして、catコマンドに入力しています。
2.「rm a.txt 2> test.txt」
このコマンドは、上記で説明した「2>」を使っているため、rmコマンドの標準エラー出力をtest.txtに書き込んでいます。
3.「echo hello > test.txt」
このコマンドは、echoコマンドの標準出力を、test.txtに書き込んでいます。標準エラー出力ではありません。
4. 「ls > test.txt」
このコマンドはlsコマンドの標準出力を、test.txtに書き込んでいるため正解になります。
リダイレクトは、シェル上でファイルの操作をしたり、コマンドのログを残す時など、使う場面が多々あります。基本的な標準出力のリダイレクトだけでなく、標準エラー出力の切り替えなどもしっかりと覚えておきましょう。
■例題作成者 株式会社デージーネット ソリューション開発部 森 彰吾 氏