Linuxを使っていて、
「このコマンドの結果を別のコマンドに渡したい」
「必要な情報だけを取り出したい」
と思ったことはありませんか?
そんなときに活躍するのが、「パイプ(|)」です。
パイプを使えば、コマンド同士をつないで”流れ”を作ることができ、作業効率をグッと上げることができます。
この記事では、Linuxのパイプの仕組みから、基本的な使い方、よく使う組み合わせ例まで、初心者にもわかりやすく解説します。
パイプ(|)とは?基本の仕組み

パイプの役割
パイプ(記号:|
)は、「前のコマンドの出力を、次のコマンドの入力として渡す」ための機能です。
command1 | command2
仕組み:
command1
の出力(標準出力)を、command2
の入力(標準入力)として渡します- ファイルを経由せず、メモリ上で直接渡すので高速です
どんな場面で使うの?
パイプが活躍する場面は、以下のようなケースです:
- 結果を絞り込みたいとき(
grep
と組み合わせ) - ソート・集計・整形したいとき(
sort
、uniq
、cut
などと併用) - データの流れを整理したいとき
ポイント:
パイプは「コマンドの出力→入力をつなぐ橋渡し役」。シンプルだけど非常に強力な機能です。
パイプの基本的な使い方【例付き】
例その1:lsの出力をgrepに渡してファイルを絞り込む
ls | grep ".txt"
何をするか: 現在のディレクトリで、.txt
が含まれるファイルだけを表示します。
実行例:
# lsの結果
document.txt
image.jpg
note.txt
program.py
# パイプ後の結果
document.txt
note.txt
例その2:psでプロセス一覧→grepで検索
ps aux | grep firefox
何をするか: 実行中のプロセスの中から、Firefoxに関連するものを探します。
例その3:catでファイルを読み込み→wc -lで行数を数える
cat access.log | wc -l
何をするか: ログファイルの行数をカウントします。
覚えておこう: 複数コマンドを「組み合わせる」だけで、手作業より何倍も早く正確に処理できます。
よく使うパイプ活用例まとめ

その1:ファイル内の重複行をカウント
sort data.txt | uniq -c | sort -nr
処理の流れ:
sort
でデータを並び替えuniq -c
で重複行をまとめて出現回数をカウントsort -nr
で数値の大きい順に並び替え
その2:ディスク使用量を大きい順に表示
du -h --max-depth=1 | sort -hr
何をするか: 現在のディレクトリ内の各フォルダの容量を、大きい順に表示します。
実行例:
1.2G ./videos
500M ./documents
100M ./images
50M ./projects
その3:ネットワークポートの使用状況を調査
netstat -tuln | grep LISTEN
何をするか: 現在待機中(LISTEN状態)のポートを一覧表示します。
その4:特定ワードの出現回数をカウント
cat logfile | grep "ERROR" | wc -l
何をするか: ログファイル中の「ERROR」という文字列の出現回数を確認します。
その5:最近更新されたファイルを探す
ls -lt | head -10
何をするか: ファイルを更新日時順に並べて、最新の10件だけを表示します。
実践的なコツ: 定番の組み合わせを覚えておくと、日々のLinux作業が劇的に効率化します。
パイプの注意点と豆知識
パイプとリダイレクト(>)の違い
記号 | 意味 | 使用例 |
---|---|---|
| | 出力を次のコマンドに渡す | ls | grep txt |
> | 出力をファイルに書き込む | ls > list.txt |
< | ファイルから入力として読み込む | sort < data.txt |
エラーメッセージは流れない?
標準では、パイプは**標準出力(stdout)**しかつなぎません。エラー出力(stderr)も一緒に処理したい場合は、以下のようにします:
command 2>&1 | another-command
説明: 2>&1
でstderr(エラー出力)をstdout(標準出力)に結合してからパイプ処理します。
パフォーマンスに関する注意
# 効率が悪い例
cat file.txt | grep "pattern"
# 効率が良い例
grep "pattern" file.txt
理由: 不要なcat
コマンドを使うと、余分なプロセスが発生してしまいます。
実践的なパイプ活用テクニック

ログ解析でよく使うパターン
# アクセスログのIPアドレス別集計
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
処理の流れ:
- ログファイルを読み込み
- IPアドレス部分(1列目)を抽出
- ソートして重複をまとめてカウント
- アクセス数の多い順に並び替え
- 上位10件を表示
システム監視でよく使うパターン
# メモリ使用量の多いプロセス上位5件
ps aux | sort -k4 -nr | head -6 | tail -5
説明: 4列目(メモリ使用率)で数値の降順ソートして、上位5件を表示します。
よくある質問と答え
Q: パイプをたくさんつなげても大丈夫ですか?
A: 技術的には制限はありませんが、3〜4個程度にとどめると読みやすくなります。
Q: パイプとファイル出力、どちらが速いですか?
A: 一般的にパイプのほうが高速です。ディスクI/Oが発生しないためです。
Q: エラーが出たときはどうすればいいですか?
A: まず各コマンドを単体で実行して、どこでエラーが起きているか確認しましょう。
まとめ:パイプを使いこなして、Linux作業をもっと効率的に!
Linuxの「パイプ(|)」は、複数のコマンドをシームレスにつなげ、複雑な処理を簡潔に自動化できる最強ツールのひとつです。
重要ポイントまとめ:
- コマンドの出力を別のコマンドに渡す
- 組み合わせ次第で何通りもの活用が可能
- 標準出力とエラー出力を意識すればさらに応用できる
コメント