Linuxの標準入出力(stdin, stdout, stderr)を徹底解説


目次

はじめに

Linuxでは、コマンドを実行すると「入力」「出力」「エラー出力」という3つの情報の流れが基本になります。これらを”標準入出力(Standard Input/Output)”と呼びます。LinuC-1(101試験)にも登場する重要な分野なので、基礎からしっかり学びましょう。


1. 標準入出力とは?

名称説明番号(ファイル記述子)
標準入力(stdin)キーボードなどからの入力0
標準出力(stdout)コマンドの通常の出力(画面に表示される)1
標準エラー出力(stderr)エラー出力(通常の出力と分けて表示)2

2. 標準出力とリダイレクト

リダイレクトとは、コマンドの入力元や出力先を標準とは異なる場所に変更することです。主にシェル(bashなど)で使われ、標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)をファイルや別のコマンドに流す際に使います。


🔁 主なリダイレクトの種類

記号意味
>標準出力をファイルに上書きls > list.txt
>>標準出力をファイルに追記echo "OK" >> log.txt
<ファイルから標準入力を受け取るsort < names.txt
2>標準エラー出力を上書きls /noexist 2> error.log
2>>標準エラー出力を追記cmd 2>> err.log
&>標準出力と標準エラー出力をまとめて上書きcmd &> all.log

基本の出力をファイルに保存する(>

command > aaa.txt

"Hello, world!" の出力が hello.txt に保存され、画面には何も表示されません。

出力を追記する(>>

command >> aaa.txt

hello.txt の末尾に「追加行」が追記されます。


3. 標準エラー出力の扱い

標準エラーは通常の出力(stdout)と分けて扱えます。

エラーだけを別ファイルに出力する

command 2> aaa.txt

→ 存在しないファイルを指定してエラーが発生(画面にはエラー表示されない) → error.txt に保存

標準出力とエラーを同じファイルに保存する

command > aaa.txt 2>&1

→ 標準出力とエラー出力の両方を all.txt にリダイレクト

エラー出力を標準出力でリダイレクトしようとするとどうなるの?

エラーが画面に表示され、空のファイルが作られます。


4. 標準入力の使用(<

command < aaa.txt

hello.txt を標準入力として受け取り、行数をカウント
wc -l hello.txt と同じ意味)


5. パイプ(|)との組み合わせ

command | command

標準出力を別のコマンドに渡すことができます。

ls -l の結果から host を含む行だけを抽出

これは「標準出力(ls)→ 標準入力(grep)」という流れです。


6. 入出力まとめ図(簡易フロー)

[キーボード] → stdin(0) → [コマンド] → stdout(1) → [画面]
→ stderr(2) → [画面]

リダイレクトやパイプでこの流れを自由に制御できるのがLinuxの強みです。



まとめ

標準入出力(stdin/stdout/stderr)は、Linuxのコマンド操作の根幹です。リダイレクトやパイプと組み合わせることで、柔軟で強力なシェル操作が可能になります。初めは混乱するかもしれませんが、コマンドを打ちながら理解を深めていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次