このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:パイプライン

パイプライン
Linuxでは、複数のコマンドを連携させて高度な処理を行うために、パイプラインという機能が用意されています。パイプラインを使用すると、あるコマンドの標準出力を直接別のコマンドの標準入力に渡すことができます。これにより、中間ファイルを作成せずにコマンド同士を効率的に連携させることが可能です。

パイプラインの基本
パイプラインは、パイプ記号 | を使用してコマンドをつなぎます。
【書式】 パイプライン<コマンド1> | <コマンド2> | <コマンド3> …

- コマンド1の標準出力がコマンド2の標準入力に渡されます。
- 同様に、コマンド2の標準出力がコマンド3の標準入力に渡されます。
パイプラインの使用例
例1:lsコマンドとlessコマンドの連携
ファイル数が多いディレクトリをlsコマンドで表示すると、結果が画面に収まりきらない場合があります。通常、以下のように一時ファイルに出力を保存してからlessコマンドで閲覧します。
一時ファイルを作成して閲覧する方法
user01@ubuntu:~$ ls -l /etc > list.txt
user01@ubuntu:~$ less list.txtしかし、パイプラインを使用すると中間ファイルを作成せずに直接lessで閲覧できます。
終了方法:lessの表示を終了するには、qキーを押します。
パイプラインを使用した方法
user01@ubuntu:~$ ls -l /etc | less操作説明
ls -l /etcの出力がlessの入力となります。lessコマンドは標準入力を受け取り、ページングして表示します。
出力例
合計 1168
drwxr-xr-x 4 root root 4096 4月 24 2024 ModemManager
drwxr-xr-x 8 root root 4096 4月 24 2024 NetworkManager
drwxr-xr-x 2 root root 4096 4月 24 2024 PackageKit
...(以下省略)...終了方法:lessの表示を終了するには、qキーを押します。
例2:historyコマンドでのパイプライン使用
bashで入力したコマンドライン履歴は、historyコマンドで表示できます。履歴が多い場合、パイプラインを使ってlessで閲覧すると便利です。
コマンドライン履歴を表示
user01@ubuntu:~$ history
885 locate docs list
886 locate -A bash doc
887 shutdown -h now
...(以下省略)...lessと組み合わせて閲覧
user01@ubuntu:~$ history | less例3:複数のコマンドを連結
パイプラインは複数のコマンドを連結できます。以下の例では、lsコマンドの結果に行番号を付与し、lessで表示します。
コマンド例
user01@ubuntu:~$ ls -l /etc | cat -n | less終了方法:lessの表示を終了するには、qキーを押します。
操作説明
ls -l /etc:/etcディレクトリの詳細なリストを取得。cat -n:入力データに行番号を付与。less:結果をページング表示。
出力例
1 合計 1168
2 drwxr-xr-x 4 root root 4096 4月 24 2024 ModemManager
3 drwxr-xr-x 8 root root 4096 4月 24 2024 NetworkManager
4 drwxr-xr-x 2 root root 4096 4月 24 2024 PackageKit
...(以下省略)...標準エラー出力もパイプラインに含める
パイプラインはデフォルトで標準出力のみを次のコマンドに渡します。標準エラー出力も含めたい場合は、2>&1を使用して標準エラー出力を標準出力にリダイレクトします。
例:エラーメッセージも含めてlessで表示
user01@ubuntu:~$ ls -l /non_exist_dir 2>&1 | less終了方法:lessの表示を終了するには、qキーを押します。
操作説明
ls -l /non_exist_dir:存在しないディレクトリを指定し、エラーを発生させます。2>&1:標準エラー出力(ファイルディスクリプター2)を標準出力(ファイルディスクリプター1)にリダイレクト。| less:結果をlessで表示。
出力例
ls: cannot access '/non_exist_dir': No such file or directory終了方法:lessの表示を終了するには、qキーを押します。
不要になったファイルの削除
不要になったファイルを削除します。
user01@ubuntu:~$ rm list.txt まとめ
- パイプラインを使うと、コマンドの標準出力を次のコマンドの標準入力に直接渡せます。
- 中間ファイルを作成せずにコマンドを連携できるため、効率的な処理が可能です。
- 複数のコマンドを
|でつなぐことで、より複雑な処理を簡潔に表現できます。 - 標準エラー出力もパイプラインに含めたい場合は、
2>&1を使用してリダイレクトします。
パイプラインを活用することで、Linuxのコマンド操作がより強力かつ柔軟になります。シンプルなコマンドを組み合わせて、さまざまなニーズに対応できるよう、ぜひ習得しておきましょう。
