実務で頻出する「パイプ・リダイレクト」関連の用語を、一言定義+最小実例でサッと確認。
入出力の流れを制御し、複雑な処理をシンプルに組み立てられるようにします。
今回取り扱うBashについての基本構文について以上にも、Bashの基本を網羅している解説記事はこちら → Bash
このページで達成できること
- 標準入力/出力/エラーの流れを自在に切り替える
- 複数コマンドをパイプでつなぎ、効率的に処理する
- 出力を保存しつつ画面表示するテクニックを身につける
- 順序や評価の落とし穴を理解して安全に活用
すぐ引けるミニ索引
| 用語 | 一言で | 代表例 |
|---|---|---|
| リダイレクト | 入出力の流れ替え | > file, 2> err.txt |
| 標準入力リダイレクト | 入力をファイルから与える | cmd < in.txt |
| 標準出力リダイレクト | 出力をファイルに保存 | cmd > out.txt |
| 標準エラーリダイレクト | エラー出力を保存 | cmd 2> err.txt |
| 出力統合 | 標準出力と標準エラーをまとめる | cmd > all.txt 2>&1 |
| パイプ( | ) | 出力を次のコマンドに渡す |
| tee | 出力を複製して保存+表示 | `cmd |
| ヒアドキュメント | 複数行入力を渡す | cat <<EOF ... EOF |
| ヒアストリング | 1行入力を渡す | cat <<< "text" |
用語解説(繰り返しブロック)
リダイレクト(redirect)
とは:コマンドの入出力をファイルやFDに流し替える仕組み。
最小実例
cmd > out.txt 2> err.txt
関連:FD / stdout / stderr
落とし穴:順序で挙動が変わる(2>&1 >file は stderr が画面に残る)。
標準入力リダイレクト
とは:ファイルをコマンドの入力に渡す仕組み。
最小実例
sort < data.txt
関連:stdin / <
落とし穴:リダイレクトを忘れると入力待ちで停止する。
標準出力リダイレクト
とは:通常の出力をファイルに保存する仕組み。
最小実例
ls > list.txt
関連:stdout / >
落とし穴:上書きがデフォルト。追記は >>。
標準エラーリダイレクト
とは:エラー出力を別ファイルに保存する仕組み。
最小実例
ls nofile 2> error.txt
関連:stderr / 2>
落とし穴:stdout と stderr を混ぜないと出力がバラける。
出力統合(stdout+stderr)
とは:標準出力と標準エラーをまとめる方法。
最小実例
cmd > all.txt 2>&1
関連:リダイレクト / FD
落とし穴:指定順序を誤るとまとめられない。
パイプ(pipe)
とは:あるコマンドの標準出力を次のコマンドの標準入力に接続。
最小実例
grep "500" access.log | wc -l
関連:stdin / stdout / フィルタ系コマンド
落とし穴:前段が大量出力すると後段がボトルネックになる。
tee
とは:標準出力を複製し、画面表示とファイル保存を同時に行う。
最小実例
make 2>&1 | tee build.log
関連:パイプ / ログ収集
落とし穴:追記は tee -a を忘れがち。
ヒアドキュメント(here document)
とは:複数行文字列を入力としてコマンドに渡す。
最小実例
cat <<EOF
line1
line2
EOF
関連:リダイレクト / 展開制御
落とし穴:<<'EOF' とクォートすると変数展開されない。
ヒアストリング(here string)
とは:1行文字列を入力として渡す。
最小実例
cat <<< "hello world"
関連:リダイレクト / ヒアドキュメント
落とし穴:Bash拡張機能。POSIX sh では使えない。
運用の現場Tips
- ログ管理:stdout と stderr を分けて保存し、解析を容易に
- 順序の確認:リダイレクトの評価順で結果が変わる → 常にテストする
- デバッグ時は tee:画面に出しつつログ保存して解析可能
- スクリプト設計:ヒアドキュメントで設定ファイルを自動生成する習慣を持つ

