LinuCレベル1 101試験の例題と解説
1.03.3ストリーム、パイプ、リダイレクトの使用
今回は、LinuC 101試験の試験範囲から「1.03.3 ストリーム、パイプ、リダイレクトの使用」についての例題を解いてみます。
コマンドの結果をディスプレイに出力しながらファイルにも出力することができるteeコマンドについて、使用方法を覚えておきましょう。
例題
リダイレクトについて適切な説明を選択してください。
- 「cat < test.txt」は、標準出力をtest.txtに書き込んでいる
- 「rm a.txt 2> test.txt」は、標準入力をtest.txtに書き込んでいる
- 「echo hello > test.txt」は、標準エラー出力をtest.txtに書き込んでいる
- 「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に書き込んでいるため正解になります。
リダイレクトは、シェル上でファイルの操作をしたり、コマンドのログを残す時など、使う場面が多々あります。基本的な標準出力のリダイレクトだけでなく、標準エラー出力の切り替えなどもしっかりと覚えておきましょう。
例題作成者
株式会社デージーネット OSS研究室 森 彰吾 氏