§16 パイプとリダイレクト(兼 実習16)

 コマンドをUNIX風に実行する事も可能です。コマンドの出力をそのま ま後続するコマンドに受け渡すとか、出力をファイルにしたいとか、ファイルの内容を入力したい等など。これはDOS2からDOSで採用されました。MS- DOSV2.11より発売の遅れていたMSX-DOSではコマンドが単体で対応するなどの滑稽な現象も現れるほど便利なものでした(なぜか過去形)。
 パイプとは出力がパイプラインを通って次の命令にそそぎ込まれると言う感じで名付けられたのではないでしょうか(だとしたらけっこうなユーモアです ね!)。有名な話ですが、実際はテンポラリーファイルと言うものを作成して実現しています。また、あとで解説しましょう。
 リダイレクトはこの文章作成にもかなり役立っています。例を示しましょう。
A:\>DIR >FILES.TXT
 これで、DIRの出力結果がFILES.TXTと言うファイルに転送されます。疑うなら実行した後エディタでのぞき込んでみましょう。 SAMPLE2.TXTと言うファイルが仮にあるとします。このファイルはテキスト形式で160行あるとします。これを1ページずつ表示してみましょう。
A:\>MORE <SAMPLE2.TXT
これをパイプで再現してみましょう。
A:\>TYPE SAMPLE2.TXT | MORE
“|”はキーボードによってはただの縦線か、真ん中の切れた縦線だったりします。我がJ3100VSでは後者です(しかも漢字キーとCAPSの間。これだ からノートは・・・)。MSXでも同様です(SANYO MSX2+WAVY32調べ)。ポケコンでもそうですね(SHARP PC-G815調べ)、ポケコンで使用価値があるかどうかはさておいて。これがパイプを意味します。リダイレクトで分解すると
A:\>TYPE SAMPLE2.TXT > $PIPE000.$$$
A:\>MORE < $PIPE000.$$$
A:\>DEL $PIPE000.$$$
(パイプそのもののファイル名は実際と違います。)
と、同様のようです。リダイレクトで今一つ“>>”というものもあります。“>”と同様ですが、同じファイル名のファイルが存在すると 追加していきます。BASICのOPENのAPPENDと一緒だね。分からなかったらごめん。

もどる