━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ いざというときに役立つMS−DOS 執筆:速星 千里 第46号(2004.03.20) リダイレクトとパイプ(3) 5831部配信 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ---[ P R ]------------------------------------------------------------ ビジネスを成功させる情報、あなたは・・・  □欲しくない    □欲しい!       ↓ ドコモビジネスサイト⇒ http://211.10.20.135/a/a.cgi?k00865Am01507 ★★★しかも今ならメルマガ会員登録で図書券1000円が当たるかも。★★★ ---[ P R ]------------------------------------------------------------ ---[ P R ]------------------------------------------------------------  空いた時間の有効活用!自宅でお仕事してみませんか?     パソコンとインターネットを使える環境があればできるお仕事です。         ■ 試験・資格は不要。無料資料送付中!! ■ ─────────────────────────────────── お問合せ・資料請求はこちら http://211.10.20.135/a/a.cgi?k04910Am01507 ---[ P R ]------------------------------------------------------------ <目次> ■ はじめに ■ フィルタコマンド ● MOREコマンド ● FINDコマンド ● SORTコマンド ■ リダイレクトやパイプが効かない出力 ● 標準出力 ● 標準エラー出力 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ はじめに ------------------------------------------------------------------------ 皆さん、こんにちは。速星です。 今回は、第44号の続きで、パイプで利用できる代表的なフィルタコマンド3つ を紹介します。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ フィルタコマンド ------------------------------------------------------------------------ フィルタコマンドとは、別のコマンドの出力結果を以下のような書式や図で表さ れるパイプで受け取り、求める体裁に加工するものでした。 コマンド | フィルタコマンド 【註】 図は、等幅フォントでご覧下さい。     入力┌────┐出力 入力┌────────┐出力 入力装置→→│コマンド│→→→→→│フィルタコマンド│→→出力装置       └────┘     └────────┘   ここでは、フィルタコマンドとしてよく用いられる、MORE、FIND、SORTの各コマ ンドについて説明します。 ------------------------------------------------------------------------ ● MOREコマンド MOREコマンドはこれまでも何度か使ってきましたが、フィルタコマンドの代表例 ですから、改めて簡単に整理しておきます。 入力されたテキストを、1画面ずつに切り分けて出力するのがMOREコマンドです。 書式は次のようになります。 コマンド | MORE コマンドの出力が1画面に収まりきらないときに、1画面ずつ表示させる最も簡 単な方法がこれです。 ------------------------------------------------------------------------ ● FINDコマンド 文字列を検索するときに利用するのがFINDコマンドです。 プログラマやUNIXユーザには、GREPの簡易版といえば分かりやすいでしょうか。 コマンド | FIND [/V] [/C] [/N] [/I] "文字列" 検索対象の文字列はダブルクォーテーション「"」で囲う必要があります。 文字列以外のオプションを指定しなければ、その文字列が見つかった全ての行の 内容が表示されます。 オプションとしては、結果を反転する「/V」と行数だけを表示する「/C」がよく 用いられます。 各オプションについての詳細は、ヘルプ「/?」で確認して下さい。 FINDコマンドは、バッチファイル中などで、別のコマンドの出力から特定の行を 抜き出したり、行数を数えたりするときにしばしば用いられます。 特に、状況に応じて動作を変えるバッチファイルを作る場合には、欠かせない存 在といえます。 例えば、DIRコマンドでファイルの更新日が「04-03-09」のように表示される場 合、「DIR | FIND " 04-02-"」とすれば、カレントディレクトリにある、最終更 新日が今年の2月であるファイルの一覧を表示させることができます。 (日付の表示形式はWindowsやDOSのバージョンによって異なります) バックアップ対象ファイルや削除対象ファイルなどのリストアップに利用できそ うですね。 ------------------------------------------------------------------------ ● SORTコマンド テキストを行単位で並べ替えるのがSORTコマンドです。 コマンド | SORT [/R] [/+数字] このコマンドは、前のコマンドからパイプで送られてきた複数行の文字列を、行 単位で、0→9、A→Zの順に並べ替えます。英大小文字は区別されません。 オプション「/R」を指定すると並び替えが逆順になります。 また、「/+数字」というオプションを指定すると、先頭からn文字目(nは指定 した数字)以降の文字列を基準にして並べ替えが行われます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ リダイレクトやパイプが効かない出力 ------------------------------------------------------------------------ 例えば、空のフロッピーディスクドライブやCDドライブに対してDIRコマンド でファイル一覧を表示させようとすると、次のようになります。 > D:\>DIR A:\ > > 準備ができていません. 読み取り中 ドライブ A: > 中止 (A), 再試行 (R), 失敗 (F)?A > > D:\> ディスクが入っていないので、エラーメッセージが表示されました。 ここでは、表示された3つの選択肢の中から「A」を選んで、DIRコマンドの処理 を中止しています。 では、このときの出力を「D:\FILELIST.TXT」にリダイレクトしてみましょう。 > D:\>DIR A:\ > D:\FILELIST.TXT > > 準備ができていません. 読み取り中 ドライブ A: > 中止 (A), 再試行 (R), 失敗 (F)?A > > D:\>TYPE D:\FILELIST.TXT > > D:\> 出力をリダイレクトしたはずなのに、通常通り、画面にエラーメッセージが表示 されてしまいました。 また、続いて実行したTYPEコマンドの結果から分かるように、出力先に指定した はずの「D:\FILELIST.TXT」には何も保存されていません。 ここから、出力の中にはリダイレクトやパイプが効かないものもある、というこ とが分かります。 ------------------------------------------------------------------------ ● 標準出力 出力のうち、リダイレクトやパイプが効く「普通の」出力を標準出力といいます。 プログラムで通常使われる出力は、この標準出力です。 C言語なら「stdout」 C++なら「cout」 Javaなら「System.out」 Perlなら「STDOUT」 が、標準出力に該当します。 ------------------------------------------------------------------------ ● 標準エラー出力 一方、リダイレクトが効かなかった出力は、標準エラー出力と呼ばれるものです。 エラーメッセージの出力には、通常、こちらが利用されます。 C言語なら「stderr」 C++なら「cerr」 Javaなら「System.err」 Perlなら「STDERR」 が、標準エラー出力に相当します。 DOSの場合、標準エラー出力の出力先はディスプレイに固定されています。 リダイレクトやパイプによって出力先を振り替えることはできません。 これは、ユーザがエラーに気付かないということがないようにするためです。 先程の例で、エラーメッセージまでもが「D:\FILELIST.TXT」にリダイレクトさ れたらどうなるか、考えてみて下さい。 「中止 (A), 再試行 (R), 失敗 (F)?」というエラーメッセージを出力した後、 DIRコマンドはキー入力があるまで待機します。 一方、画面に何も表示されなければ、ユーザは、キー入力を促されたことに気付 きません。コマンドの終了を待ち続けることになります。 その結果、いつまで経ってもコマンドが終わらない、ということになってしまい ます。 このような不都合を防止するため、出力を他の装置やファイルなどに振り替えた ときでも、エラーメッセージだけは常にディスプレイに表示されるようになって いるのです。 ------------------------------------------------------------------------ 今回はここまでです。 お疲れ様でした! 次号の予定は、「バッチファイル開発ツール」です。 バッチファイルの動作確認・デバッグを支援するためのバッチファイルを紹介し ます。 ---[ P R ]------------------------------------------------------------    ┏━━━━━━━━━━━━━ビジネスパートナー情報センター━━━  ┌─╂───   企┃業┃と┃企┃業┃を┃結┃ぶ┃B┃to┃B┃ ━┿━┛      ━┛━┛━┛━┛━┛━┛━┛━┛━┛━┛━┛ ─┘代理店募集 / ビジネス提携 / 卸先募集 / 仕入れ先募集 / 求人情報等            http://www.kingdom.or.jp/jpb/      ---[ P R ]------------------------------------------------------------ ---[ P R ]------------------------------------------------------------ ◆◇◇=*=*=*=*=*=*=  毎月100万円が当る!  =*=*=*=*=*=*◇◇◆ ★フルーツメール★から    抽選で毎月1名様に【現金100万円】プレゼント!! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ http://www.fruitmail.net/cgi/introduce_jump2.cgi?2204949 ---[ P R ]------------------------------------------------------------ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ コメントをお待ちしています ------------------------------------------------------------------------ 皆さんからの感想・質問・要望をお待ちしています。 「こんなテーマを扱ってほしい」 「こんなことはできるの?」 「このへんが分かりにくかった」 「1回の分量を増やしてほしい/減らしてほしい」 など、掲示板(下記URL)まで気軽にお願いします。 http://bbs9.otd.co.jp/dos/bbs_thread (スレッド表示) http://bbs9.otd.co.jp/dos/bbs_tree (ツリー表示) メールでもコメントを受け付けておりますので、そちらもご利用下さい。 tetrahedrane@yahoo.co.jp なお、いただいたコメントは、本マガジン上で引用する場合があります。 (メールアドレスやお名前は一切公開いたしません) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● 感想・質問宛先 http://bbs9.otd.co.jp/dos/bbs_tree tetrahedrane@yahoo.co.jp ● 広告募集 当メルマガへの広告掲載をご希望の方は、下記アドレスまでお願いします。 tetrahedrane@yahoo.co.jp ● メルマガ交換広告募集 当メルマガとのメルマガ交換広告をご希望の方は、下記アドレスまでどうぞ。 tetrahedrane@yahoo.co.jp ● 登録・解除・バックナンバー http://www.geocities.co.jp/Bookend-Hemingway/4963/column/dos/ このメールマガジンは、『まぐまぐ』を利用して発行しています。 http://www.mag2.com/m/0000106066.htm (c) 2004 Chisato Hayahoshi