初心者目線のLPIC講座 〜わかりやすいかも、このサイト〜

初心者目線のLPIC講座 > パイプとリダイレクト > パイプ

パイプとリダイレクト

パイプ

これもまた便利な機能ですが、使ってみると慣れないうちは少しややこしいと思います。パイプとは「|」という記号のことで、見ての通り「筒」を意味するパイプのような形状の記号です。

このパイプの機能は、あるコマンドの出力を次のコマンドへの標準入力にすることができます。

ちなみにここで取り上げるコマンドは「tee」と「xargs」です。

通常は「command1|command2」という風に入力します。簡単に言うと、

「command1」の実行結果を「command2」で利用する

というわけです。

例えば、下記のコマンドを実行したとします。

$ ls | grep lpic

このコマンドの流れを解説すると、

・ まず「ls」ではファイルの一覧を取得します。

・ 「ls」の実行結果を次のコマンド「grep lpic」に渡します。

・ grepコマンドで「ls」で取得したファイル一覧の中から"lpic"という文字を含んだファイル名を表示します。

コマンドの実行結果を標準出力とファイルの両方に出力するには、「tee」コマンドを使います。

「tee」コマンド

意味:標準入力をファイルに書き込み、同時に標準出力にも出力する。

書式:tee [オプション] ファイル名

オプション(以下):

-a・・・ファイルの内容に追加書き込みをする(上書きではない)

$ ls | grep lpic | tee lpictxt

と入力すると、「ls | grep lpic」の実行結果を標準出力、つまり画面に表示した上に「lpictxt」というファイルにも書き込みます。

ちなみにこの「tee」コマンドにオプション「-a」を付けると、上書きではなく追加書き込みをします。

コマンドの実行結果を、パイプ「|」で接続されたコマンドの引数として実行するには「xargs」コマンドを使います。

「xargs」コマンド

意味:標準入力からのデータを引数として指定したコマンドを実行する。

書式:xargs コマンド

オプション:

例えば、

$ locate lpic | xargs ls -l 

と入力します。順を追って説明すると、「「locate lpic」で"lpic"という文字列の含まれるファイル名を検索します。

その実行結果を「ls -l 」の引数として渡します。つまり最終的には

"lpic"という文字列を含んだファイルの一覧を表示せよ

ということになります。

 なので、以下とも同じようですが、

ls -l *lpic*

これだと、そのディレクトリ内(カレントディレクトリ)のファイルしか表示してくれません。

詳しい話は省略しますが、「locate」コマンドで得られる処理結果は、ディレクトリ情報などがあらかじめ記載されたデータベースの内容を見て、そこに載っているファイルを全て検索します。だからそのディレクトリ以外のファイルも検索してくれるのです。凄いですねえ。

スポンサードリンク