パイプとフィルターを使用して出力にリダイレクトする

複数のコマンドを接続して、1 つのコマンドの標準出力を別のコマンドの標準入力として使用するようにできます。 このように接続されたコマンドのセットを、パイプライン といいます。

コマンドを結合する接続部をパイプ といいます。 パイプは、多数の単一目的コマンドを結合して、1 つの強力なコマンドにしてしまうので、有用です。 パイプラインを使用して、あるコマンドの出力を別のコマンドの入力にすることができます。 コマンドは、パイプ (|) 記号で接続されます。

あるコマンドが別のコマンドから入力を取り込み、入力を変更してその結果を標準出力に送る場合、それをフィルター といいます。 フィルターは単独で使用することもできますが、パイプラインで使用すると特に便利です。 最も一般的なフィルターを以下に示します。
  • sort
  • more
  • pg
以下の例をご確認ください。
  • ls コマンドは、現行ディレクトリーの内容を 1 スクロール・データ・ストリーム分だけ画面に書き出します。 情報が複数の画面分ある場合は、データの一部が表示画面から失われます。 出力を制御して内容を 1 画面ごとに表示するには、パイプラインを使用して、 ls コマンドの出力を画面への出力フォーマットを制御する pg コマンドに送ることができます。 例えば、次のように入力します。
    ls | pg
    この例では、ls コマンドの出力が pg コマンドの入力になります。 Enter キーを押して、次の画面を表示します。

    パイプラインは、一方向 (左から右) にしか処理を行いません。 パイプラインのコマンドはそれぞれ別個のプロセスとして実行し、またすべてのプロセスを同時に実行できます。 プロセスは、読み取る入力がなくなるか、または次のプロセスへのパイプがいっぱいになった時点で休止します。

  • パイプを使用したもう 1 つの例として、 grep コマンドを使用した例を次に示します。 grep はファイルを検索して、特定のパターンの文字列を含む行を探します。 例えば、7 月に作成または変更したファイルをすべて表示させるには、次のように入力します。
    ls -l | grep Jul
    この例では、ls コマンドの出力が grep コマンドの入力になります。