next up previous contents index
次へ: ワイルドカード 上へ: はじめの一歩…から三歩目ぐらいまでのお話 戻る: パス   目次   索引

リダイレクトとパイプ

例えばlsとやると、モニターにカレントディレクトリのファイルが表示されます。 このコマンドの振る舞いを、 ``カレントディレクトリの中のファイルを調べて'' ``その結果をモニターに表示する'' という2つの部分に分けて考えてみましょう。 この時後の部分をモニターではなく、なにかのファイルに書き込みたいとします 28。そこで、出力先をモニターからファイルに変えてみます。

nursefan% ls
list2.list  sample2.f   sample4.pl  text3
list3.list  sample3.pl  text2       work1
nursefan% ls > test
nursefan% 

ここで ``$>$'' は、 ``左の結果を右に出す'' ということを意味していると思って下さい。 こういう処理を難しい言葉でいうと ``リダイレクト処理'' といいます。 実際に、more かなんかでtestを覗いてみると

nursefan% more test
list2.list
list3.list
sample2.f
sample3.pl
sample4.pl
test
text2
text3
work1
となって、リストになってファイルに書かれています。

似たような処理をもう一つ。今度は、あるコマンドの結果を他のコマンドの入力にしたい と言う場合を考えてみます。なんだかわからないからやってみましょう。ネタは、 プロセス(…わかんないですよね、こんなん書いても。ようするに、今計算機が行っている 1つ1つの仕事というか命令というかそのようなもの)を調べるコマンドである ps と、 ある文字列(そのまんま。文字の羅列のこと)を検索する grep です。

nursefan% ps -aux | grep saoimage
halffishman   16861  0.0  1.0  2068 2540  p1  I    12:39AM    0:00.10 saoimage
nursefan      16902  1.4  1.0  2088 2580  p4  S+   12:40AM    0:00.09 saoimage
これは ``ps -aux の膨大な量の結果を、saoimage という ``文字列'' で grep にかけた'' ということです(-aux とありますが、この ``-なんちゃら'' は オプションといい、コマンドにオプションをつけない時とはちょっと違う結果を 出してくれるものです)。 その結果、私以外に halffishman なる人が saoimage を使っていることが判り ます。ここで $\vert$ は、 ``左のコマンドの結果を右のコマンドの入力とする'' ということを意味していると思って下さい。こういう処理を難しい言葉でいうと ``パイプ処理'' といいます。

これらのことをより正確に理解するためには、標準入力と標準出力、標準エラー 出力などを学ばないといけません。UNIXの本を参照して下さい。



HAMABE Masaru 平成15年11月27日