このページで解説している内容は、以下の 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のコマンド操作がより強力かつ柔軟になります。シンプルなコマンドを組み合わせて、さまざまなニーズに対応できるよう、ぜひ習得しておきましょう。