はじめに
Linuxを触っていると、
こんな言葉をよく見かけます。
-
標準入力
-
標準出力
-
標準エラー出力
正直、最初は
「なんとなく雰囲気で使ってる」
という人も多いはずです。
でも実はこの3つ、
-
パイプ(|)
-
リダイレクト(> や 2>)
すべての 土台になる超重要な概念です。
この記事では、
-
標準入力・標準出力・標準エラー出力とは何か
-
それぞれが何をしているのか
-
なぜLinuxでは分けられているのか
を、パイプの記事の前提知識としても使える形で解説します。
Linuxのコマンドは「入出力」を持っている
Linuxでは、
ほぼすべてのコマンドが次の3つを持っています。
| 種類 | 役割 |
|---|---|
| 標準入力 | コマンドに渡される入力 |
| 標準出力 | 正常な結果の出力 |
| 標準エラー出力 | エラー用の出力 |
普段は意識しませんが、
常にこの仕組みの上で動いています。
標準出力とは?
標準出力は、
コマンドが正常に出す結果です。
例えば、
を実行すると、
ファイル一覧が画面に表示されます。
このとき、
-
表示されている文字列
-
それが流れている先
これが 標準出力です。
👉
「画面に表示される結果 = 標準出力」
と考えてOKです。
標準エラー出力とは?
標準エラー出力は、
エラー用に用意された別ルートの出力です。
例えば、
とすると、
というメッセージが出ます。
これが 標準エラー出力です。
重要なのは、
👉 標準出力とは 別扱い
👉 エラーだけを分けて扱える
という点です。
なぜ標準出力と標準エラーを分けているのか
理由はシンプルです。
-
正常な結果だけを処理したい
-
エラーは別で確認したい
というケースが多いからです。
Linuxは
自動処理・スクリプト前提のOSなので、
エラーと通常出力を分けられる設計になっています。
標準入力とは?
標準入力は、
コマンドが受け取る入力です。
多くの場合、
-
キーボードからの入力
-
他のコマンドの出力
が標準入力になります。
例えば、
を実行すると、
入力待ちになりますよね。
これは、
👉 キーボード入力を
👉 標準入力として待っている
状態です。
標準入力・標準出力の流れをまとめる
ここまでを整理すると、
という流れになります。
Linuxでは
この流れを自由につなぎ替えられる
のが最大の特徴です。
パイプ(|)との関係
ここで、前回の記事と繋がります。
パイプ(|)は、
前のコマンドの標準出力を
次のコマンドの標準入力に渡す
仕組みでした。
例えば、
これは、
-
ls の標準出力
-
を grep の標準入力に渡す
という動きをしています。
👉
パイプが分からない場合は、
先にこちらの記事を読むと理解が一気に進みます。
※参考記事
「Linuxのパイプ(|)とは何をしているのか?標準入力・標準出力から理解する」
LinuC試験との関係
LinuCでは、
-
標準入力
-
標準出力
-
標準エラー出力
-
パイプ
-
リダイレクト
が セットで問われます。
特に、
-
パイプは標準出力 → 標準入力
-
エラー出力は別扱い
この2点は
理解している前提知識として出てきます。
注意点
画面表示=すべて標準出力ではない
エラーメッセージは
標準エラー出力です。
見た目が同じでも、
内部的には別ルートという点が重要です。
最初は完全に理解しなくてOK
この概念は、
-
パイプ
-
リダイレクト
-
シェルスクリプト
を触っていく中で、
あとから腑に落ちることが多いです。
まずは
「3つに分かれている」
ことを押さえれば十分です。
まとめ
標準入力・標準出力・標準エラー出力は、
Linuxの入出力の基本です。
ポイントを整理すると、
-
標準入力:受け取る側
-
標準出力:正常な結果
-
標準エラー出力:エラー専用
-
それぞれは別ルート
-
パイプは標準出力を標準入力に渡す
この理解があると、
Linuxコマンドが
ただの暗記から「仕組み理解」に変わります。


コメント