このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:パイプ

パイプ

 Linuxのシェルにおいて「パイプ(|)」は、複数のコマンドをつなげて処理を連携させる仕組みです。あるコマンドの出力結果を、別のコマンドの入力として渡すことができるため、効率的かつ柔軟に作業を進められます。これにより、1つ1つのコマンドを組み合わせて「小さな部品を連結して大きな処理」を作ることが可能になります。

 たとえば、大量のテキスト出力を less コマンドでスクロールして確認したり、必要な部分だけを grep で抽出したりといった操作ができます。このようにパイプは、Linuxにおけるコマンド活用の幅を大きく広げる基本機能の一つです。

1.パイプの基本

1.1. 書式

パイプの基本的な書式は以下の通りです。

コマンド1 | コマンド2

 「コマンド1」の実行結果(標準出力)が、「コマンド2」の標準入力へと受け渡されます。これにより、複数の処理を直列につなげることが可能です。

1.2. 動作イメージ

表でまとめると以下のようになります。

処理の流れ説明
コマンド1データを生成する(例: ls でファイル一覧を出力)
コマンド2入力を受け取って処理する(例: grep で特定の文字列を検索)

図で表すと以下のようなイメージです。

この図のように、パイプは「データを流す通路」の役割を果たしています。

2.主な活用方法

2.1. 出力をページ単位で確認

出力が長い場合は less と組み合わせて使うことが一般的です。

使用例

[user@rocky9 ~]$ ps aux | less
  • ps aux : 実行中のすべてのプロセスを表示
  • less : 出力を1画面ずつスクロール表示

これにより、長いプロセス一覧をスクロールして確認できます。

2.2. 特定の情報を抽出

grep と組み合わせると、必要な行だけを効率的に取り出せます。

使用例

[user@rocky9 ~]$ cat /etc/passwd | grep tanaka
tanaka:x:1001:1001::/home/tanaka:/bin/zsh
  • /etc/passwd の内容を cat で出力
  • grep tanaka で「tanaka」というユーザー情報だけを抽出

3.コマンドとオプションのまとめ

パイプと組み合わせる代表的なコマンドの主なオプションを以下にまとめます。

コマンド主なオプション説明
less-N行番号を表示
-S行の折り返しを禁止
grep-i大文字・小文字を区別しない検索
-v指定パターンを含まない行を表示
-n行番号を付けて表示
ps-eすべてのプロセスを表示
-f詳細情報を表示
-u user指定したユーザーのプロセスを表示

これらをパイプで組み合わせることで、柔軟にシステム情報を扱うことができます。

4.応用例

4.1. 行数を数える

ファイルの中から特定の文字列を含む行がいくつあるか調べる例です。

[user@rocky9 ~]$ grep "bash" /etc/passwd | wc -l
3

ここでは、grep で抽出した結果を wc -l に渡し、行数をカウントしています。

4.2. 複数段階の処理

パイプは2つ以上を連続して使うこともできます。

[user@rocky9 ~]$ ps aux | grep ssh | sort -k2
  • ps aux : プロセス一覧を出力
  • grep ssh : ssh関連のプロセスを抽出
  • sort -k2 : 2列目(プロセスID)でソート

複数の処理をつなげることで、必要な情報を整理して取り出すことができます。

まとめ

 パイプ(|)は、Linuxにおいて複数のコマンドをつなげて効率的に処理を行うための基本機能です。

  • 出力をそのまま次のコマンドに渡せるため、中間ファイルを作成する必要がない。
  • lessgrepwcsort などと組み合わせて利用すると強力
  • 簡単なコマンドでも組み合わせによって大きな効果を発揮できる。

Linuxを日常的に操作するうえで、パイプの活用は避けて通れないスキルです。