はじめに
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のコマンド操作の根幹です。リダイレクトやパイプと組み合わせることで、柔軟で強力なシェル操作が可能になります。初めは混乱するかもしれませんが、コマンドを打ちながら理解を深めていきましょう。


コメント