標準入力・標準出力・標準エラー出力とストリーム
この記事を読んでほしいひと
LPIC level1習得を目ざす、初学者のかたへ。
コマンドの基本的な使い方について、解説をします。
今回の内容
今回は、標準入力・標準出力・標準エラー出力とストリームについて解説します。
ふだん私たちはキーボードから入力をおこなっており、その結果はディスプレイに表示されます。実はキーボード以外からも入力を行うことが可能であり、出力に関してもディスプレイ以外に結果を表示させることができます。標準入力・標準出力・標準エラー出力に関するコマンドはリダイレクトなどの記事で解説しているので、あわせて読むことで理解をさらに深めてくださいね。
標準入力、標準出力、標準エラー出力
普段私たちはキーボードを通じてコマンドを入力しており、その入力されたコマンドの結果がディスプレイ上で表示されています。この流れをコマンドの立場になって考えてみましょう。コマンドではキーボードから入力されたとは考えずに「標準入力」から入力されたと考えます。この標準入力のデフォルトとしてキーボードが割りあてられており、コマンドによってキーボードではなくファイルを指定することができます。ファイルにあらかじめ文字を入力しておき、ファイルを標準入力としてディスプレイに出力する、という流れになります。
ディスプレイ上で表示される場面でもコマンドの立場になったとき、ディスプレイに出力しているとは考えず「標準出力」に出力していると考えています。この標準出力はデフォルトではディスプレイに割りあてられており、コマンドによってディスプレイではなくファイルに出力することもできます。キーボードでコマンドを入力した結果を、ディスプレイ上ではなくファイルに出力する、という流れになります。
コマンドを入力しているとエラーが表示されることがありますが、これもコマンドの立場になって考えると、ディスプレイにエラーを表示しているとは考えずに「標準エラー出力」に出力していると考えます。この標準エラー出力のデフォルトがディスプレイに割りあてられており、コマンドによってディスプレイではなくプリンタに出力する、ということもできます。キーボードでコマンドを入力してエラーが出力された場合、ディスプレイ上ではなくプリンタで印刷する、という流れになります(そんな設定にしたらコマンド入力ミスはもしかしたら減るのかも……しれません)。
この標準入力、標準出力、標準エラー出力を理解するうえで、標準入力のデフォルトはキーボードに設定されており、標準出力、標準エラー出力のデフォルトはディスプレイに設定されており、標準入力から標準出力、標準エラー出力へとプロセスが進む、ということを理解することが非常に重要となります。
ストリーム
標準入力から標準出力へ、標準入力から標準エラー出力へ、それぞれプロセスが進むことがわかりました。この標準入力と標準出力を実感するために、catコマンドを引数なしで入力してみましょう。そしてWelcome standard inputと入力した結果なにが出力されるか確認してみましょう(標準入力を英語ではstandard inputといいます。ちなみに標準出力はstandard outputです)。
[root@localhost Documents]# cat Welcome standard input #Welcome standard inputと入力 Welcome standard input #Welcome standard inputと出力
catコマンドを引数なしで入力した場合、標準入力を標準出力へコピーします。この標準入力のデフォルトがキーボードであるため、キーボードからWelcome standard inputが入力されると、catコマンドにより標準出力へと渡されます。標準出力のデフォルトはディスプレイなので、Welcome standard inputが表示されました。このような標準入力から標準出力へのデータの流れのことをストリームと呼びます。
標準入力から標準出力、標準エラー出力までのデータの流れをストリームと呼ぶ。
まとめ
今回は、標準入力・標準出力・標準エラー出力とストリームについて解説しました。実際に標準入力をデフォルトのディスプレイからファイルに変更するコマンドについては、リダイレクトなどの記事で解説しているのでぜひ読んでみてくださいね。
最後に確認問題で、今回の記事の知識を復習してみましょう。
確認問題
標準入力元のデフォルトとして設定されているのは、①キーボード、②ファイル、③ディスプレイ、④プリンタのうちどれか。