2003 CNS GUIDE
copyright
 

5.12 入出力のリダイレクションとパイプ

通常,コマンドはキーボード(標準入力)から入力され,結果は画面(標準出力)に出力されます. しかし,コマンドの実行結果を利用して次の処理をするときに,実行結果をファイルや次のコマンドに出力できれば効率的に作業を行えます. シェルは``リダイレクション''と``パイプ''という コマンドの入力や出力を切り替える機能をもっています.

5.12.1 リダイレクション

リダイレクションは,ファイルの内容を標準入力として使用したり,標準出力の内容をファイルに書き込むための機能です. リダイレクションを利用することによって,ファイルの内容をコマンドに入力したり,コマンドの実行結果をファイルに書き込めます. リダイレクションには,`<'や `>'を用います.

5.12.2 パイプ

パイプは,ある1つのコマンドの標準出力を 次のコマンドの標準入力として使用する際に利用します.

次の例では,`ls -l'の標準出力を次の lessコマンド([*]) の標準入力として利用しています. こうすることで,lsコマンドの出力が1画面以上の長さにわたる場合でも,1画面ごとに止めて見られます.

% ls -l | less <ENTER>
total 170
-rw-r--r--   1 t03000tf     8963 Jan  6 10:51 01report.tex
-rw-r--r--   1 t03000tf    14413 Jan  6 10:51 02report.tex
-rw-r--r--   1 t03000tf    13680 Jan  6 10:51 03report.tex
-rw-r--r--   1 t03000tf    71738 Jan  6 10:51 04report.tex
-rw-r--r--   1 t03000tf    21617 Jan  6 10:51 05report.tex
-rw-r--r--   1 t03000tf     8725 Jan  6 10:51 06report.tex
-rw-r--r--   1 t03000tf     2040 Jan  6 10:51 kadai.tex
-rw-r--r--   1 t03000tf      176 Jan  6 10:48 mymemo.txt
drwxr-xr-x   2 t03000tf      512 Jan  6 11:28 privateFile/
-rw-r--r--   1 t03000tf    25819 Jan  6 10:51 reserch.tex
:_

パイプは2つ以上のコマンドをつなぎ合わせられます. なお,パイプの後に`&'をつけると,コマンドの標準出力だけでなく標準エラー出力も 次のコマンドの入力として利用できます(表5.3).

[コマンド1] | [コマンド2]


表 5.3 パイプの種類
記号 意味
| 標準出力のパイプ
|& 標準出力と標準エラー出力のパイプ

コマンドの入力と出力先に同じファイル名を指定してはいけません. 同じファイル名を指定するとファイルの内容が失われてしまいます. リダイレクションによる 上書きを防止するときには,あらかじめシェルで` set noclobber'と入力しておきます.