パイプ | dos入門 [講座] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 講座 | dos入門 | DOSプロンプトを手とり足とりでやさしく学習。

HOME > 講座 > dos入門 > パイプ

hatena twitter facebook rss ソーシャルブックマーク

パイプ

10ステップでdosをマスター 今回で最後の講座です。前回のリダイレクトは理解できましたか?

Windowsしか使わない人には理解しづらかったかもしれませんが、リダイレクトをマスターすればDOSによる強力なパソコン操作が見えてきます。データをファイルとして別に保存しておき、自由に加工できるようになるのです。

そして、今回はWindowsにできなくて、DOSだけができる究極の技法になります。リダイレクトの親戚のようなものなのですが、パイプという考え方です。前出の図を再掲します。

  [入力元]                                          [出力先]

  キーボード >>---+                               +--->> CRT
               |                               |
  ファイル     >---+---> 標準入力      標準出力 ---+--->  ファイル
               |     (stdin)       (stdout)    |
  RS-232C  >---+                               +---> RS-232C

  ※標準入力がキーボードで標準出力がCRTの場合(打った文字が画面に出る)。


この図をじっと見ていると標準入力と標準出力が何か関係があって繋がるような感じがしませんか。実は、標準入出力を繋げているものがプログラムなのです。

  [入力元]                                                [出力先]
                                 +--+
  キーボード >>---+                 |プ|                +--->> CRT
               |                 |ロ|                |
  ファイル     >---+---> 標準入力 ---|グ|--- 標準出力 ---+--->  ファイル
               |     (stdin)     |ラ|    (stdout)    |
  RS-232C  >---+                 |ム|                +---> RS-232C
                                 +--+


typeを使ったstdinとstdoutの接続

 図と照らし合わせてみてください。typeコマンド(プログラム)はファイルからの入力をCRT(画面)に出しているに過ぎません。

  [ TYPEコマンドの場合(ファイルの内容が画面に) ]
                                 +--+
  キーボード  >---+                 |T|                +--->> CRT
               |                 |Y|                |
  ファイル    >>---+---> 標準入力 ---|P|--- 標準出力 ---+--->  ファイル
               |     (stdin)     |E|    (stdout)    |
  RS-232C  >---+                 |  |                +---> RS-232C
                                 +--+


dirを使ったstdinとstdoutの接続

 dirコマンド(プログラム)は通常はCRT(画面)に出力するようになっているのですが、それを繋ぎ変える指令としてリダイレクト記号「>」を使用して、ファイルに出力させたのです。

  [ DIRコマンドの場合(ディレクトリの内容が画面に) ]
                                 +--+
  キーボード  >---+                 |  |                +--->> CRT
               |                 |D|                |
  ファイル    >>---+---> 標準入力 ---|I|--- 標準出力 ---+--->  ファイル
               |     (stdin)     |R|    (stdout)    |
  RS-232C  >---+                 |  |                +---> RS-232C
                                 +--+

  [ リダイレクトしたDIRコマンドの場合(ディレクトリの内容がファイルに) ]
                                 +--+
  キーボード  >---+                 |  |                +---> CRT
               |                 |D|                |
  ファイル    >>---+---> 標準入力 ---|I|--- 標準出力 ---+--->> ファイル
               |     (stdin)     |R|    (stdout)    |
  RS-232C  >---+                 |  |                +---> RS-232C
                                 +--+


このように、パイプはプログラムとプログラム間で標準入出力を結合します。

実際にパイプを試してみよう

 さて、ここでechoコマンドを紹介しますね。echoは読んで字の如くエコーです。実際にやってみたほうが理解が早いですね。DOSを起動して、\foobarディレクトリに移動してください。その後、「echo hello」とコマンド投入してみてください(echoとhelloの間は半角スペース)。

  C:\foobar>echo hello
  hello


画面にhelloと表示されましたね。分かりましたか?このechoコマンドはechoの後に続けて書いた文字を画面に出力するだけのコマンドなのです。これを図と照らし合わせるとキーボードからの入力をechoコマンド(プログラム)がCRT(画面)に出力していると捉えることができます。

ここで、dateコマンドを思い出してください。dateをコマンド投入すると変更する日付をキーボードで入力できる仕様でしたね。ピンときましたか?

この二つのコマンドを繋げることができたら、echoコマンドの文字をdateコマンドに引き渡すことができますね。わざわざ日付ファイルを作ってリダイレクトする必要がなくなります。

さっそく試してみましょう。まず、dateで日付を確認します。

  C:\foobar>date
  現在の日付は 20**-**-** (**)        (**のところは日によって異なる)
  日付を入力してください(年-月-日): <-- エンターキーを押してください


それでは、echoとdateを繋いで、過去の1999-12-31に日付を戻すことにしましょう。コマンド(プログラム)同士を繋ぐための記号は「|」です。パイプ(縦棒)ですね。それでは、以下のコマンドを投入してください。

  C:\foobar>echo 1999-12-31 | date
  現在の日付は 2004-04-04 (日)
  日付を入力してください(年-月-日): 1999-12-31


どうですか?自動的にechoコマンドで指定した1999-12-31がdateに引き渡されて、日付設定されていますね。

パイプを使えるプログラムは協力し合える

 全てのコマンド(プログラム)が標準入出力を有効に使えるように設計されている訳ではないのですが、きちんとした設計思想のあるプログラムならリダイレクトやパイプを使って、データがプログラムを渡り歩けるようになっているはずです。

UNIXを大いに参考にして作られたはずのDOSが、Windowsになって忘れてしまったもの。それは役割を明確に決められたプログラム同士が標準入出力を通してデータをやり取りしあうスタイルだったのです。

最後に、皆さんのコンピュータの日付を今日に戻しておいてください。WindowsのGUIを使ってもいいですが、ここまで読んだ方なら

  echo 20**-**-** | date      (**のところは日によって異なる)


ですね。

この後は…

 DOS入門を最後まで読んで頂きありがとうございます。本ウェブサイトのメインテーマである逆ポーランド電卓「rpn」はDOSと親和性が高く、標準入出力を存分に使えるように設計してあります。

よろしかったら、rpn基礎rpn入門を閲覧してみてください。逆ポーランド電卓「rpn」を簡単に学ぶことができます。一旦、rpnの使い方に慣れてしまえば、電卓の世界を超えた大きな世界が広がることでしょう。

広報rpnの利用範囲は広く、ビジネスにも十分に対応可能です。rpnを使ったオンライン講座ではツールの使い方から、ビジネスデータ分析金融計算、そして統計処理株式トレードまで幅広く対応しています。

【今回のDOSコマンド(記号)】
echo」「

警告バックスラッシュはエンマークに読み替えて下さい(IE)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。