最終更新日:2026年9月30日
fe fe-technology computer-system
まず結論
パイプ(pipe)とは、あるコマンドの標準出力を、別のコマンドの標準入力へ直接つなぐ仕組みです。
UNIX系のシェルでは、代表的に | を使って次のように書きます。
command1 | command2
基本情報技術者試験では、
「標準出力を、別のコマンドの標準入力へつなぐ」→ パイプ
を最優先の判断基準にすると選択肢を切りやすくなります。
直感的な説明
パイプは、前の処理の結果を、そのまま次の処理へ流すベルトコンベアのようなものです。
例えば、文字列を並べ替える処理なら次のように考えられます。
printf "banana\napple\n" | sort
処理の流れは、
printf が文字列を出力
↓
|
↓
sort がその文字列を入力として受け取る
↓
apple
banana
です。
一つのコマンドに全部の処理をさせるのではなく、小さな処理をつないで使うのがポイントです。
定義・仕組み
コマンドには、代表的に次の入出力があります。
| 名前 | 意味 |
|---|---|
| 標準入力(stdin) | コマンドが通常の入力として受け取るデータ |
| 標準出力(stdout) | コマンドが通常の結果として出力するデータ |
| 標準エラー出力(stderr) | エラーメッセージなどを出すための出力 |
通常のパイプ | では、前のコマンドの標準出力(stdout)を、次のコマンドの標準入力(stdin)へ接続します。
command1 の stdout
↓
pipe
↓
command2 の stdin
Bashの公式マニュアルでも、パイプラインでは各コマンドの出力がパイプを介して次のコマンドの入力へ接続されると説明されています。
なお、通常の | で自動的につながるのは標準出力です。標準エラー出力まで一緒に扱う方法もありますが、FEではまず stdout → stdin の基本を押さえれば十分です。
このテーマはOS・シェルの働きと関係します。公式の出題範囲はIPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
科目Aでは、パイプと似たシェル機能を混ぜた選択肢に注意します。
| キーワード | 判断する機能 | 代表例 |
|---|---|---|
| 前のコマンドの出力を次のコマンドへ渡す | パイプ | command1 \| command2 |
| 入出力先をファイルなどへ切り替える | リダイレクト | command > file |
| コマンドの終了を待たずに処理を続ける | バックグラウンド実行 | command & |
| 規則に従って複数の文字列を作る | ブレース展開 | file{1,2}.txt |
特に重要なのは、パイプとリダイレクトの違いです。
command A → command B
→ パイプ
command → file
file → command
→ リダイレクト
試験では厳密な内部実装よりも、何と何をつないでいるかを見ると判断しやすくなります。
どんな場面で使う?
パイプは、一つのコマンドの結果を別のコマンドで絞り込んだり、並べ替えたり、集計したりするときに使います。
例えば、
command1 | command2 | command3
のように複数の処理を順番につなぐこともできます。
データを作る
↓
絞り込む
↓
並べ替える
↓
結果を表示
というように、小さな処理を組み合わせて一つの流れを作るイメージです。
シェルそのものの役割を確認したい場合は、シェルとは?カーネルとの違いとコマンドを解釈する役割も合わせて確認すると整理しやすくなります。
よくある誤解・混同
パイプとリダイレクト
最も混同しやすい組合せです。
command1 | command2
は、前のコマンドの出力を次のコマンドへ渡すパイプです。
一方、
command > result.txt
は、標準出力の行き先をファイルへ変更するリダイレクトです。
リダイレクトには入力元をファイルへ切り替える < などもあります。試験では「次のコマンドへ渡す」のか、「入出力先を切り替える」のかに注目します。
パイプとバックグラウンド実行
バックグラウンド実行は、コマンド同士のデータをつなぐ機能ではありません。
command &
のように、シェルがそのコマンドの終了を待たずに次の処理へ進めるための実行方法です。
データを次へ渡す
→ パイプ
終了を待たずに実行
→ バックグラウンド実行
パイプとブレース展開
Bashなどのブレース展開は、{} の指定から文字列を展開する機能です。
echo file{1,2,3}.txt
なら、次のような文字列が作られます。
file1.txt file2.txt file3.txt
パイプのようにコマンド間の入出力を接続する機能ではありません。
まとめ(試験直前用)
試験直前は、次の3点で切り分けます。
- 標準出力 → 次のコマンドの標準入力ならパイプ
- ファイルなどへ入出力先を変えるならリダイレクト
|は「処理結果を次へ流す」と覚える
command A
↓ stdout
|
↓ stdin
command B
→ パイプ
「コマンド → コマンド」なら、まずパイプを疑う。