標準入力・標準出力・標準エラー出力とは?Linuxの入出力を初心者向けに解説




はじめに

Linuxを触っていると、
こんな言葉をよく見かけます。

  • 標準入力

  • 標準出力

  • 標準エラー出力

正直、最初は
「なんとなく雰囲気で使ってる」
という人も多いはずです。

でも実はこの3つ、

  • パイプ(|)

  • リダイレクト(> や 2>)

すべての 土台になる超重要な概念です。

この記事では、

  • 標準入力・標準出力・標準エラー出力とは何か

  • それぞれが何をしているのか

  • なぜLinuxでは分けられているのか

を、パイプの記事の前提知識としても使える形で解説します。


Linuxのコマンドは「入出力」を持っている

Linuxでは、
ほぼすべてのコマンドが次の3つを持っています。

種類 役割
標準入力 コマンドに渡される入力
標準出力 正常な結果の出力
標準エラー出力 エラー用の出力

普段は意識しませんが、
常にこの仕組みの上で動いています。


標準出力とは?

標準出力は、
コマンドが正常に出す結果です。

例えば、

ls

を実行すると、
ファイル一覧が画面に表示されます。

このとき、

  • 表示されている文字列

  • それが流れている先

これが 標準出力です。

👉
「画面に表示される結果 = 標準出力」
と考えてOKです。


標準エラー出力とは?

標準エラー出力は、
エラー用に用意された別ルートの出力です。

例えば、

ls not_exist

とすると、

ls: cannot access 'not_exist': No such file or directory

というメッセージが出ます。

これが 標準エラー出力です。

重要なのは、

👉 標準出力とは 別扱い
👉 エラーだけを分けて扱える

という点です。


なぜ標準出力と標準エラーを分けているのか

理由はシンプルです。

  • 正常な結果だけを処理したい

  • エラーは別で確認したい

というケースが多いからです。

Linuxは
自動処理・スクリプト前提のOSなので、
エラーと通常出力を分けられる設計になっています。


標準入力とは?

標準入力は、
コマンドが受け取る入力です。

多くの場合、

  • キーボードからの入力

  • 他のコマンドの出力

が標準入力になります。

例えば、

cat

を実行すると、
入力待ちになりますよね。

これは、

👉 キーボード入力を
👉 標準入力として待っている

状態です。


標準入力・標準出力の流れをまとめる

ここまでを整理すると、

[ 標準入力 ] → コマンド → [ 標準出力 ]
[ 標準エラー出力 ]

という流れになります。

Linuxでは
この流れを自由につなぎ替えられる
のが最大の特徴です。


パイプ(|)との関係

ここで、前回の記事と繋がります。

パイプ(|)は、

前のコマンドの標準出力を
次のコマンドの標準入力に渡す

仕組みでした。

例えば、

ls | grep txt

これは、

  1. ls の標準出力

  2. を grep の標準入力に渡す

という動きをしています。

👉
パイプが分からない場合は、
先にこちらの記事を読むと理解が一気に進みます。

※参考記事
「Linuxのパイプ(|)とは何をしているのか?標準入力・標準出力から理解する」


LinuC試験との関係

LinuCでは、

  • 標準入力

  • 標準出力

  • 標準エラー出力

  • パイプ

  • リダイレクト

セットで問われます

特に、

  • パイプは標準出力 → 標準入力

  • エラー出力は別扱い

この2点は
理解している前提知識として出てきます。


注意点

画面表示=すべて標準出力ではない

エラーメッセージは
標準エラー出力です。

見た目が同じでも、
内部的には別ルートという点が重要です。


最初は完全に理解しなくてOK

この概念は、

  • パイプ

  • リダイレクト

  • シェルスクリプト

を触っていく中で、
あとから腑に落ちることが多いです。

まずは
「3つに分かれている」
ことを押さえれば十分です。


まとめ

標準入力・標準出力・標準エラー出力は、
Linuxの入出力の基本です。

ポイントを整理すると、

  • 標準入力:受け取る側

  • 標準出力:正常な結果

  • 標準エラー出力:エラー専用

  • それぞれは別ルート

  • パイプは標準出力を標準入力に渡す

この理解があると、
Linuxコマンドが
ただの暗記から「仕組み理解」に変わります。

コメント

タイトルとURLをコピーしました