リダイレクトとパイプ



リダイレクト


 MS-DOSでは、コンピュータに「ああしろ、こうしろ…」とユーザが指示をするとき、キーボードからコマンドを入力し、それに対してコンピュータは、画面に結果を表示します。
 しかし、コマンドを実行したとき、その結果をファイルに出力できたら、便利だと思いませんか?そして、キーボードから入力する代わりに、ファイルから入力することができれば、これもかなり便利です。これを行う方法を「リダイレクト」といいます。

[余談その2]性格なリダイレクトの定義
 なになに、TomG君、ちょっと違うんじゃないの・・・。
はいはい、実は上の説明はちょっと足りないんですが、これを正確に説明しようとすると、この講座を読んでくれている人のほとんどが逃げてしまいそうなので、おおざっぱに説明しています。
 性格には、リダイレクトとは、
「標準入出力を、他のデバイスやファイルに切り替える」
ことをいいます。
[余談終わり]

 リダイレクトには大きく分けて二つの種類があります。

出力のリダイレクト


 「出力のリダイレクト」は、画面へ出力される情報を、ファイルに出力します。
 たとえば、ファイルやディレクトリの情報を表示する「DIR」コマンドでは、ディレクトリやファイルの数が多くなると、その情報は画面には収まりきれなくなります。そこで、その情報をファイルに出力する(リダイレクトする)には、次のようにします。

DIR >DIR.TXT リターンキー

このようにすると、画面には何も表示されずに、プロンプトの状態に戻ってきますが、ここで次のようにして、「DIR.TXT」の内容を確認してみてください。

TYPE DIR.TXT リターンキー

どうですか?この内容は、普通に「DIR」だけを入力してリターンキーを押したときの画面表示と同じですね。
これが出力のリダイレクトです。
 でも・・・これではもし万が一「DIR.TXT」がすでに存在していた場合、上書きされて元のファイルが消えてしまいます。そこで、元のファイルの後ろに、「DIR」コマンドの出力結果を追加したいときは、次のようにします。

DIR >>DIR.TXT リターンキー

 このように「>>」と二つ重ねて指定すると、元のファイルが上書きされてなくなってしまうことはありません。

 それから、この「>」マークの次に指定できるもので、ファイルとは違った特殊なものがあります。
 PRN(プリンタ)、CON(キーボードもしくは画面)、AUX(RS232C)、NUL(ダミー)
 たとえば、「DIR」の結果を、印刷したいときは、次のようにします。

★注意★WindowsのMS-DOS プロンプトでは実行しないでください。

DIR >PRN リターンキー

 このようにすると、プリンタが動き出すと思いますが、環境によってはうまく動作しない可能性があります。
また、WindowsNT4以上のコマンドプロンプトでは、標準出力の他に、標準エラー出力をリダイレクトすることもできます。
標準エラー出力というのは、プログラムがエラーメッセージを出力するのに用いる標準出力とは違った出力方法です。
コマンドの後ろに「>」をつけてリダイレクトしたにもかかわらず、画面に何らかのメッセージが出る場合には、そのメッセージは標準エラー出力に出力されていることになります。
標準エラー出力をリダイレクトするためには「2」を使います。たとえば、ネットワークドライブ「W」を切断するには

net use w: /delete

としますが、このコマンドの結果をファイルに出力したければ次のようにします。

net use w: /delete 2>message.txt

入力のリダイレクト


 もう一つのリダイレクトは、「入力のリダイレクト」です。これは、キーボードから入力する代わりに、ファイルから入力するものです。

 この例はなかなかないのですが、MS-DOSの外部コマンドに「SORT」というのがあります。このコマンドは、ほかのコマンドとはちょっと雰囲気の違うコマンドです。ためしに、次のように入力してみてください。

SORT リターンキー

 あれっ?何も起こりません。しかし・・・何かが変です。
 実はこのコマンドは、標準出力(キーボードなど)から読み込んだ行を、並べ替えるコマンドなのです。
今は何も入力しませんでしたので何も表示されません。Ctrl+Cキーを押すとプロンプトに戻ります。
 みなさんのハードディスクの中には、先ほどの実験で作成した「DIR.TXT」があるはずですので、次のようにしてみてください。

SORT <DIR.TXT リターンキー

 いかがですか?「DIR.TXT」が順番に並べられ、画面に表示されましたよね?
もし、この結果をファイルに出力したければ、

SORT <DIR.TXT >DIRSORT.TXT リターンキー

のようにします。


パイプ
 次にリダイレクトとセットで説明されることが多い「パイプ」について説明します。


 これは、コマンドの結果を、次のコマンドに送り込む方式で、コマンドの間を「|(縦線)」記号でつなぎます。
 たとえば、「DIR」コマンドの結果を、順番に表示したいときは、次のようにします。

DIR | SORT リターンキー

 これは、「DIR」コマンドの結果を、「SORT」コマンドに渡して処理してから、画面に表示しています。
また、DIRコマンドの結果が画面に収まりきれないので1画面ずつ停止してリターンキーを押すと先に進めるようにするには、DIRコマンドの結果をMOREというページャーコマンドに渡します。

dir | more リターンキー

二つを組み合わせる


 パイプとリダイレクトは、次のように組み合わせて使用できます。

DIR | SORT >TEST.TXT リターンキー

 このようにすると、「DIR」コマンドの出力が「SORT」コマンドによって順番に並べられ、それが「TEST.TXT」へ出力されます。

 パイプとリダイレクトは、ちょっと難しそうですが、覚えておくと大変便利ですので、みなさんもいろいろと実験してみてください。

次へ

講座のメニューに戻る

MS-DOSの部屋へ戻る

トップページ