Linuxのシェルには、単にコマンドを実行(プログラムを起動)するだけでなく、複数のプログラム(プロセス間)をパイプでつなぐことができます。

パイプとは、コマンドの標準出力を別のコマンドの標準入力に流し込む仕組みです。名前のとおり、コマンドとコマンドの間を結ぶパイプのような働きをします。この仕組みを使って、コマンドの結果を他のコマンドに受け渡すことができるようになります。

パイプの使い方

パイプはコマンドとコマンドを「|」(パイプ)という記号で結んで利用します。
パイプを使えば、長い出力結果をビューワで見たり、必要な場所だけを抜き出して表示したりできます。
Linuxでは、たくさんの機能を持った万能のプログラムが存在しないかわりに、パイプを使って小さなプログラムを複数組み合わせて、さまざまな機能を実現できます。

コマンドとコマンドの間をパイプ記号「|」で結ぶことによって、いくらでもつなげることができます。以降に、パイプを使った例を記載します。

psとlessの組み合わせ

psコマンドで多くのプロセスを表示すると、1画面には入りきらないことが多々あります。そのような場合は、パイプを使ってpsの出力をテキストファイルビューワのlessで見ると、すべてのプロセスを観察できます。

以下のように、psコマンドの標準出力をlessコマンドの標準入力につなげて実行します。

$ ps auxw | less

lessコマンドは、ファイルや標準入力の内容を1画面ずつ表示するコマンドです。

psとgrepの組み合わせ

grepコマンドと組み合わせることで、特定のプロセスの状態だけを表示することができます。

psコマンドで「syslogd」の状態だけ見てみましょう。grepは、指定した文字列パターンの含まれる行を表示するコマンドです。

以下のように、psコマンドの標準出力をgrepコマンドの標準入力につなげて実行します。

$ ps auxw | grep syslogd

上記コマンドを実行することで、「syslogd」という単語を含む行だけが表示されます。