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

【Linux】パイプとは

パイプとは

 パイプ(pipe)とは、LinuxやUnix系のオペレーティングシステムで使用される機能で、一つのコマンドの出力を別のコマンドの入力として渡すことができる仕組みです。

 これにより、複数のコマンドを連携させて、データを効率よく処理することができます。パイプは、シェルスクリプトやコマンドラインでよく使われ、データのフィルタリング、変換、解析などを簡単に行うための非常に強力なツールです。

 パイプは「|」という記号で表現されます。例えば、「command1 | command2」のように記述すると、「command1」の出力が 「command2」の入力として渡されます。

「 | 」記号の読み方

読み方説明
パイプ一般的な読み方
縦棒記号の形状に基づく読み方
縦線記号の形状に基づく読み方
バーティカルバー英語の "Vertical bar" のカタカナ表記
バーティカルライン英語の "Vertical line" のカタカナ表記
「 | 」記号の読み方

パイプの使用例

以下に、パイプを使用した具体的な例をいくつか示します。

1.ファイル一覧のフィルタリング

 特定のディレクトリ内のファイルをリストし、その中から特定の文字列を含むファイルのみを表示します。

・「ls -l | grep "ダウンロード"」コマンドを実行します。

 この例では、「ls -l」コマンドでディレクトリ内のファイル一覧を表示し、その出力を「grep "ダウンロード"」コマンドに渡して、「ダウンロード」が含まれるファイル名もしくはディレクトリ名のみを表示します。

user01@ubuntu-vm:~$ ls -l | grep "ダウンロード"
drwxr-xr-x 2 user01 user01 4096  1月  1 10:51 ダウンロード

2.ログファイルの解析

ログファイル内のエラーメッセージをカウントします。

・「cat /var/log/syslog | grep "error" | wc -l」コマンドを実行します。

 この例では、「cat /var/log/syslog」コマンドでログファイルの内容を表示し、その出力を「grep "error"」コマンドに渡して、error を含む行を抽出します。さらに、その出力を「wc -l」コマンドに渡して、行数をカウントします。

user01@ubuntu-vm:~$ cat /var/log/syslog | grep "error" | wc -l
75

3.プロセスのフィルタリングとソート

特定のユーザーが実行しているプロセスをリストし、CPU使用率でソートします。

・「ps aux | grep user01 | sort -rk 3」コマンドを実行します。

 この例では、「ps aux」コマンドで現在実行中のプロセスをリストし、その出力を「grep username」 コマンドに渡して特定のユーザーのプロセスのみを抽出します。その結果を「sort -rk 3」コマンドに渡して、CPU使用率の降順でソートします。

user01@ubuntu-vm:~$ ps aux | grep user01 | sort -rk 3
user01      5341  4.0  3.5 732352 69900 ?        Ssl  21:49   0:00 /usr/libexec/gnome-terminal-server
(省略)
user01      5396  0.0  0.0    496   128 pts/0    R+   21:49   0:00 sort -rk 3

4.ディレクトリのサイズを確認

ディレクトリ内の各ファイルのサイズを表示し、サイズ順にソートします。

・「du -h | sort -h」コマンドを実行します。

 この例では、du -h コマンドで各ファイルのサイズを表示し、その出力を sort -h コマンドに渡して、サイズ順にソートします。

user01@ubuntu-vm:~$ du -h | sort -h
4.0K	./.cache/evolution/addressbook/trash
4.0K	./.cache/evolution/calendar/trash
(省略)
47M	./snap
47M	./snap/firefox
47M	./snap/firefox/common
65M	.

まとめ

 パイプは、複数のコマンドを組み合わせて効率的にデータ処理を行うための強力なツールです。シェルスクリプトや日常のコマンドライン操作において、パイプを使いこなすことで、より柔軟で強力な操作が可能になります。