パイプとはあるコマンドの出力を他のプログラムの入力にする機能のことで文字|をコマンドとコマンドの間に置けばよい。パイプは多段につなげられ、小さな機能を持つプログラムをつなぎ合わせて、データを様々に加工できる。パイプはUNIXの真骨頂と言っていい。
たとえば、カレントディレクトリにあるファイルで拡張子がtxtのファイルの個数を知りたい場合、lsコマンドの出力をwcコマンドの入力にすればよいので次のようにコマンドを入力する。
$ ls -1 *.txt | wc -l
キーボードからの入力を標準入力、ディスプレイ画面への出力を標準出力といい、この標準入出力をファイルなどに切り換えることをリダイレクトという。リダイレクトを使うとコマンドの出力をファイルに保存したり、ファイルに保存されているデータをコマンドの入力に利用できる。リダイレクトは表10.1[リダイレクトの記号]の記号を使う。
記号 | 意味 |
---|---|
> | ファイルへの上書き出力。ファイルが存在しないときは新たに作成される。 |
< | ファイルの内容を入力として使う。 |
>> | ファイルへの追加書き込み。 |
2> | エラー出力の書き込み |
2>> | エラー出力の追加書き込み |
2>&1 | 標準エラー出力を標準出力にリダイレクト |
例えば、lsコマンドの出力をファイルdirlist.txtに書き込みたければ次のようにリダイレクトさせる。
$ ls -l >dirlist.txt
標準入力を標準津力へコピーし、ファイルを作成するコマンドでパイプラインでのコマンドへの入力をファイル化したいときに使う。
カレントディレクトリの詳細なリストを表示し、かつファイルdir.lstに書き込む
$ ls -la | tee dir.lst