# 第三章 GNUとUnixのコマンド
練習問題3.6
findコマンドの実行結果とエラー出力を、いずれも find.logファイルに保存しようとしています。実行しべき適切なコマンドを選択してください。
A. find / -name core > find.log
B. find / -name core 2 > find.log
C. find / -name core 2>&1 | find.log
D. find / -name core > find.log 2>&1
E. find / -name core 2>&1 find.log
(解答)D
(解説)
選択肢Aは、findコマンドの実行結果のみがfind.logに保存され、エラー出力は保存されないので不正解です。選択肢Bは、findコマンドのエラー出力のみをfind.logに追記するのおで不正解です。選択肢Cは、パイプの直後にあるfind.logがコマンドと認識されてしまうので不正解です。選択肢Eは、findコマンドのエラー出力が、標準出力の出力先である端末画面に出力されます。また、find.logはコマンドと認識されるため、不正解です。従って、正解は選択肢Dです。
標準入出力
Linuxでは、通常のファイルと同等に、ディスプレイへの出力やキーボードからの入力もファイルの読み込みも同等に扱い、ディスプレイへの出力もファイルへの書き出しも同等に扱います。このようなデータの入出力に伴うデータの流れのことをストリームと呼びます。Linuxではデータをストリームとして扱うため、3つの基本的なインターフェースが定められています。標準入力はプログラムへの入力ストリームであり、デフォルトはキーボードです。標準出力はプログラムからの出力ストリームであり、デフォルトは画面(端末)です。標準エラー出力はプログラムの正常動作とは関係のないエラーメッセージなどの出力ストリームであり、デフォルトは画面(端末)です。これらの標準入出力を自在に切り替えることにより、同一のプログラムにさまざまな動作を期待することができます。
標準入出力
0 標準入力 キーボード
1 標準出力 画面(端末)
2 標準エラー出力 画面(端末)