【初心者向け】Linuxのパイプ(|)の使い方を徹底解説!コマンドをつなげて作業効率アップ

Linux

Linuxを使っていて、
「このコマンドの結果を別のコマンドに渡したい」
「必要な情報だけを取り出したい」
と思ったことはありませんか?

そんなときに活躍するのが、「パイプ(|)」です。

パイプを使えば、コマンド同士をつないで”流れ”を作ることができ、作業効率をグッと上げることができます。

この記事では、Linuxのパイプの仕組みから、基本的な使い方、よく使う組み合わせ例まで、初心者にもわかりやすく解説します。

スポンサーリンク

パイプ(|)とは?基本の仕組み

パイプの役割

パイプ(記号:|)は、「前のコマンドの出力を、次のコマンドの入力として渡す」ための機能です。

command1 | command2

仕組み:

  • command1の出力(標準出力)を、command2の入力(標準入力)として渡します
  • ファイルを経由せず、メモリ上で直接渡すので高速です

どんな場面で使うの?

パイプが活躍する場面は、以下のようなケースです:

  • 結果を絞り込みたいときgrepと組み合わせ)
  • ソート・集計・整形したいとき(sortuniqcutなどと併用)
  • データの流れを整理したいとき

ポイント:
パイプは「コマンドの出力→入力をつなぐ橋渡し役」。シンプルだけど非常に強力な機能です。

パイプの基本的な使い方【例付き】

例その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

処理の流れ:

  1. sort でデータを並び替え
  2. uniq -c で重複行をまとめて出現回数をカウント
  3. 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

処理の流れ:

  1. ログファイルを読み込み
  2. IPアドレス部分(1列目)を抽出
  3. ソートして重複をまとめてカウント
  4. アクセス数の多い順に並び替え
  5. 上位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の「パイプ(|)」は、複数のコマンドをシームレスにつなげ、複雑な処理を簡潔に自動化できる最強ツールのひとつです。

重要ポイントまとめ:

  • コマンドの出力を別のコマンドに渡す
  • 組み合わせ次第で何通りもの活用が可能
  • 標準出力とエラー出力を意識すればさらに応用できる

コメント

タイトルとURLをコピーしました