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 リターンキー
このようにすると、プリンタが動き出すと思いますが、環境によってはうまく動作しない可能性があります。
もう一つのリダイレクトは、「入力のリダイレクト」です。これは、キーボードから入力する代わりに、ファイルから入力するものです。
この例はなかなかないのですが、MS-DOSの外部コマンドに「SORT」というのがあります。このコマンドは、ほかのコマンドとはちょっと雰囲気の違うコマンドです。ためしに、次のように入力してみてください。
SORT リターンキー
あれっ?何も起こりません。しかし・・・何かが変です。
実はこのコマンドは、標準出力(キーボードなど)から読み込んだ行を、並べ替えるコマンドなのです。
みなさんのハードディスクの中には、先ほどの実験で作成した「DIR.TXT」があるはずですので、次のようにしてみてください。
SORT <DIR.TXT リターンキー
いかがですか?「DIR.TXT」が順番に並べられ、画面に表示されましたよね?
もし、この結果をファイルに出力したければ、
SORT <DIR.TXT >DIRSORT.TXT リターンキー
のようにします。
次に、ちょっとリダイレクトとにたような機能に「パイプ」というのがあります。
これは、コマンドの結果を、次のコマンドに送り込む方式で、コマンドの間を「|(縦線)」記号でつなぎます。
たとえば、「DIR」コマンドの結果を、順番に表示したいときは、次のようにします。
DIR | SORT リターンキー
これは、「DIR」コマンドの結果を、「SORT」コマンドに渡して処理してから、画面に表示しています。
パイプとリダイレクトは、次のように組み合わせて使用できます。
DIR | SORT >TEST.TXT リターンキー
このようにすると、「DIR」コマンドの出力が「SORT」コマンドによって順番に並べられ、それが「TEST.TXT」へ出力されます。
パイプとリダイレクトは、ちょっと難しそうですが、覚えておくと大変便利ですので、みなさんもいろいろと実験してみてください。