> ホーム > テキスト処理 > コマンドラインくらい使っとけ

コマンドラインくらい使っとけ

Windows に愛の手を

Table of Contents

MS-DOSプロンプト/コマンドプロンプトは、普通の人はあまりお目に掛かるものではないかもしれません。やつだけ黒バックに白い文字でなんか浮いてるし、なんか意味のわかんないエラーらしきものばっかり出るし、だいいち全然面白くないじゃん!

いやいや、若人よ、いや、別に若くなくてもいいけど、焦っちゃだめよ。考えようによっちゃいきなり反応がなくなったりせずにちゃんとエラーを返してくるんだから、ものすごく親切な話じゃないの。いちいち反応返してくれるうえにこちらが何かするまでは黙って待ってくれるんだから、こんなにユーザー本位のインターフェイスはなかなかないですぜ。

それに、コマンドラインでは起動する時にオプションを設定することができ(GUI の場合は基本的に立ち上げたあとにオプションを設定する)、なおかつ他のコマンドとの連携が「標準入出力のパイプ」という方法で実現できるため、いくつものコマンドの連携、さらにこれを高度にした自動処理など、「使い方が広がる」という特徴を持ってるんだ。

こりゃーもう使うっかねーっしょ。(2001.10.)

「ファイル名を指定して実行」なんて使えない!

というわけでこのページはコマンドラインだワッショイ!なのですが、しかし Microsoft はプロンプトが初心者に優しくないと判断したためか、Windows が GUI だというイメージを植え付けたいからか、プロンプトの改良がいやになったのか、キーボードからアプリケーションを実行する手段として、「ファイル名を指定して実行」というものを用意しました。

でもこれは本当にただアプリケーションを起動できるだけで、例えばそのメッセージを受け取るようなことはできないのです。要するに使えるのはスタートメニューから普通に起動できる、普通の Windows アプリだけなのです。(試しに ping や ipconfig を使ってみればすぐ分かります。)だったらそういう使い方をするソフトは全部スタートメニューに入れておいてくれよー、と思いますよねぇ?

なんでこんなわけの分からない仕掛けになってるんだろ。こんなあほなものは使えません。プロンプトを活用しましょう。

プロンプトが使いこなせると、流行の Perl スクリプト(もう流行ってないか。)の、CGI だけでない本領を発揮させることができます。やっぱなんたってスクリプト言語はプロンプトと仲良しなのです。

また、プロンプトでは複数のコマンドを同時に、しかもそれぞれが連携するように起動することができます。これがテキスト処理で最も基本的かつ有効な「パイプ」という技です。テキスト処理は、コマンドライン環境を抜きにして語れません。

(Mac の場合はコマンドラインというものは存在しないので、awk も Perl も独自のインターフェイスを用意しています。残念ながらお手軽に連携させることはできませんが、これはこれでかなり使い勝手のよい仕上がりになっています。ただ、開発に携わる人の絶対数が少ないため、どうしてもバージョンアップが止まりがちになってしまうのが玉に傷ですが…。OS X ならそんなことはないんですがね。)

[ ↑ content ↑ ]

基本的な使い方

ところでさっきからプロンプト、プロンプトと読んでいるものの正体は

\Windows\COMMAND.COM
Windows 95, 98 の場合。Me はよく知らない。以後、9x系 と略記。
\WINNT\system32\CMD.EXE
Windows NT 4, 2000 の場合。NT 3.51 はよく知らない。以後、NT系と略記。

です。ま、どちらもスタートメニューから起動できるので別に正体は知る必要ないかもしれないですけど。

で、9x系の場合は、実はベースが MS-DOS ということで本物の MS-DOS と同じように動作します。NT系の場合は MS-DOS プロンプトという名前になっていないことからも分かるとおり、MS-DOS とはベツモノです。ただ、代表的なものに関しては MS-DOS のコマンドが移植されているので、MS-DOS の経験があればあまり違和感なく使えますし、NT ならではの機能も追加されています。また、MS-DOS のプログラムはエミュレーションで動きます。

(面白いことに NEC PC-98 上の Windows でも IBM PC/AT 系の DOS のような表示になります。また、安定性は Win3.1 時代と逆転して、PC/AT 系の Windows の方がよいようです。)

[ ↑ content ↑ ]

少ないコマンド

動かすときに大切なのは、何よりまず

ができることです。

そのために必要なコマンドはとりあえずこんな感じ。

思ったよりかなり少ないでしょ? 実はそれほどビビることはないのです。

[ ↑ content ↑ ]

ドラッグと、コピー&ペースト

プロンプトにファイルをドラッグしているところ
プロンプトにファイルをドラッグしているところ2
プロンプトにファイルをドラッグしてファイル名が入ったところ

面倒なのはファイル名やディレクトリ名をいちいち入力するところなのですが、これも、慣れないうちは Explorer などのファイラーと連携させることで回避できます。それは 、

プロンプトにファイルやフォルダをドラッグする

です。すると、カーソルの位置にそのファイルやフォルダのフルパスの名前が現われます。これはかなり便利。慣れないうちは使うに限ります。

また、他のアプリケーションとの間で文字をコピー&ペーストでやり取りすることができます。ちょっと方法は独特ですが。

9x系の MS-DOS プロンプトの場合はツールバーを使います。ひょっとすると他のやり方もあるかもしれませんが、どうせ慣れてきたらそんなに使わない方法だと思うので、ま、いいです。NT系の場合はタイトルバーを右クリックします。するといろいろ出てきます。NT系の場合は表示行数や色なんかが最初から自由に変更できるようになっているのですが、それもここから変更できます。

プロンプトにクリップボードの内容を貼り付けようとしているところ

[ ↑ content ↑ ]

カレントディレクトリ

コマンドラインを使うときに意識しないといけないのが、「カレントディレクトリ」というやつです。これは、「いま直接作業対象となっているディレクトリ」、あるいは「いま居るディレクトリ」という意味です。

Win95以降の Windows や MacOS では基本的にファイルの管理も GUI で行うため、見た目にも分かりやすい「フォルダ」という名前(実は日本語では全然分かりやすくないのですが)を利用していますが、ディレクトリと別に違いはありません。*1

*1

興味があったら directory, folder のもとの意味を調べてみてください。

ディレクトリの階層構造とカレントディレクトリと相対パス

ご存知の通り、ディスクは階層構造になっています。ルートディレクトリと呼ばれる、ドライブの直下のディレクトリから始まって、その下の階層のサブディレクトリと、ディレクトリの中のファイルの集合体となっています。

カレントディレクトリというのは Explorer で言うと、いま開いているフォルダのことです。

もちろん Explorer などのグラフィカルなファイラー/シェルでは、開いていないフォルダを対象に操作を行うことはできないので、開いているフォルダ、開いていないフォルダと言われてもピンとこないかもしれません。無理を承知で例えて言えば、GUI はリモコンのないテレビ、CUI(コマンドライン)はリモコンつきのテレビのようなものです。リモコンがないとわざわざテレビの目の前まで近づいていかないといけません。これが目的のフォルダを開く操作。CUI の場合はリモコンがあるのでわざわざ目的のフォルダを開かなくてもよい。ただ、このリモコンがそれほどいいデキではないので、結局テレビの目の前、つまりカレントディレクトリの方が操作は楽。って感じです。(無理矢理だなぁ。)

[ ↑ content ↑ ]

パス

プロンプトからプログラムを起動する場合、

  • そのプログラムの名前をフルパスで入力する
  • プログラムの名前だけを入力する

の二通りの方法があります。

どちらの方法を取るにしても、要するにそのプログラムがディスクのどこにあるのかが正確に OS に伝わる必要があるのですが、後者の方法を使う場合はプログラムの名前だけしか入力していないからプログラムの格納されている場所が分かりません。そこで、「ここかここかここにあるはず」という情報をあらかじめ与えておいて、そのディレクトリについては OS に自動的に探してもらおう、そうすればプログラムの場所を正確に特定できるはずだ、という具合に準備をしておきます。これが「パスを設定する(通す)」という作業になります。

パスというのは要するにディスク上の位置のことで、例えば

C:\WINNT\system32\CMD.EXE

と書かれていたら C ドライブの中の WINNT というディレクトリの下の system32 というディレクトリの下の CMD.EXE というプログラム、という意味になります。また、この表記方法を絶対パス、あるいはフルパスと呼びます。

これに対して相対パス

. (ピリオド1つ)
現在のディレクトリを表す
.. (ピリオド2つ)
一つ上の階層のディレクトリを表す

などを駆使して、カレントディレクトリからの相対的な場所を教える書き方です。どこかで見たことあるかもしれませんが、ホームページの URL と基本的には一緒です。(そりゃ当たり前だって話なんですけどね。)

で、具体的にパスを通すには、環境変数*2を使います。環境変数 path に、

*2

環境変数そのものについては説明し始めると長くなるので別な機会、別なサイトに譲ります。

D:\home>path=C:\usr\local\bin;C:\usr\bin;C:\Windows\COMMAND

なんて具合に設定しておくと、

  • C:\usr\local\bin
  • C:\usr\bin
  • C:\Windows\COMMAND

を自動的に探してくれますので、

このどこかにプログラムを置いておけばプログラムの名前を入力するだけで実行できるようになります。見れば分かるように、区切り文字は `;'(セミコロン) に、ディレクトリの区切りの文字は `\'(バックスラッシュ、あるいは円マーク) になっています。(これはのちに紹介するシェルをインストールした場合、シェルによって違います。)

これがちゃんと設定されていないと、有名な「コマンドまたはファイル名が違います。」とか「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」などのエラーメッセージで怒られてしまうわけです。

UNIX では(シェルによって違うのかもしれないけど、フツーはセキュリティ上の問題で)カレントディレクトリを探してくれないので、カレントディレクトリのプログラムを実行してほしい場合は `.'(ピリオド、カレントディレクトリの意味) を path に入れておくか、実行するときに `./プログラム名' と入力する必要がありますが、DOS/Windows ではその必要はありません。

[ ↑ content ↑ ]

標準の(特に9x系)プロンプトはてんでダメ!

ね。プロンプトってのはそんなに悪いもんじゃないでしょう。うまく設定すればプロンプトから普通の Windows アプリを起動したり、ファイルを読み込ませたりもできるので、けっこう便利に使えるんですよ。

しかしその前に、標準のプロンプトが使いにくいのも事実なのです。使ったことがなければ分からないでしょうけど、Windows のプロンプトは

といった問題がありまして、そのままではちょっと使いにくいのです。また、便利なコマンドが不足しているという問題もあります。例えば

コマンド何するものぞ
man command

command のマニュアルを表示する。help コマンドなんかよりはるかに詳しいマニュアルです。

less

自由にスクロールバックしたり検索機能のあるページャー。これがないと長い文章やマニュアルを満足に読めない

pushd/popd(Win9x系)

ディレクトリ情報を保存して移動する。やってみないと分かんないと思うけど、このコマンドを組み合わせると、移動したあとに元のディレクトリに帰ってこれる。すごく便利。

foreach

コマンドをくり返し実行する。そのとき、パラメータを変化させたりできる。コマンドも単一のコマンドに限らない。バッチやシェルスクリプトにするほどのものでもない作業に便利。もちろんシェルスクリプトの中でも活躍する。for コマンドとは違う。

ps / kill

プロセス一覧表示とプロセスの終了。(WinNT系 では GUI のタスクマネージャがあるけど。)

とか。まだまだ挙げられるでしょう。テキスト処理で言えば grep, sed, awk とか。head とか tail とか。ま、この辺は Perl 入れて全部スクリプトで処理しちゃうってのもあると思います。ちょっと力技ですが。

あと、「ちゃんとしたマルチタスクじゃない」とか「バックグランドでの起動ができない」(NT系は未確認。)いうのも困りものです。で、「バッチ」の機能がまたかなり低い。昔はバッチが使えなければ…みたいなことを言っていたものですが、まともなエディタも付属していない、まともな機能のないバッチを使えと言われましてもねぇ…てな感じです。いま思えばですけど。

それにしても Windows 2000 で EDLIN を発見するとは思わなかったなー。

Windows 2000 や XP のプロンプトはきちんと解説を読んで設定すれば案外よさげな感じです。(2002.04.追記。)

ただまぁ、負け惜しみじゃないですけど(誰に対してだ?)、UNIX化を目指した方が、使いこなすための情報量は断然多くなると思います。Windows の機能だけで頑張るのは労多くして実りが少ないのではないかと。どうせなら Unix でも通じるノウハウを手に入れた方が世界が広いですよ。

[ ↑ content ↑ ]

プロンプト改造計画 〜 コマンドラインは UNIX を目指す 〜

ちゅーことでこいつを改造します。なに、改造したって違法じゃない(Microsoft のライセンスにも違反しないでしょ)し、基本的によそさまに迷惑を掛けたりもしません。

車で言えばタイヤをグリップのいいものに代えて、ちょっと CD チャンジェーつけてみましたって感じ? 走りやすくなるし、車の中が少し楽しくなるような、そんな感じです。(よけー分からんかもしれん。)

KI-Shell(History) + UNIX-like tools (+ djgpp v2)

MS-DOS の頃からの方法です。Win9x系 ならこの方法でイケます。NT系でもできなくはないかもしれませんが。NTでは DOS のプログラムはエミュレートで動くので遅く、あまり気持ちよくないような気がします。

UNIX-like tools は v4 以降、KI-Shell は ver.1.73g 以降で LFN に対応(KI-Shell 1.73g は別に LFN patch 1 以降が必要)しているので、マルチタスクで動かないとか、どうしようもない制限を除いて、Windows 95 以降で使えます。

djgpp v2 は MS-DOS でも動きますが、32ビットアプリなので、MS-DOS 上で動かす場合は一工夫必要です。ま、ここでは Windows のプロンプトでの利用を前提にしているのでその辺は端折ります。

ところで、最近はもっといいプログラムがあるのかもしれませんが、探す気にならなかった(別に不便で困ったりしなかった)ので、全然分かりません。

KI-Shell

http://www.htosh.com/software/freesoft/kishell.html

KI-Shell 派と History 派に分かれるくらいに人気のあったソフトです。どちらも「常駐ソフト」と呼ばれるもので、command.com という、Win9x系で使われているプロンプトの上に被さって様々な機能を追加するソフトです。ただ、基本的には Windows 9x に MS-DOS の常駐ソフトをかます方法はメモリの利用効率や安定性から言えばあまり誉められた方法ではありません。*3

インストール方法は簡単で、適当なディレクトリに展開して、1行、autoexec.bat に KI-Shell を起動するコマンドを書き足してあげて、再起動すればオッケー。こうすれば、次からは MS-DOS プロンプトを開いたら、KI-Shell が有効になっています。(これ以上細かい説明は MS-DOS の詳しい説明が書かれた Web や書籍を探してください。)

何はともあれ Win9x 系の方は KI-Shell のページ http://www.htosh.com/software/freesoft/kishell.html に行って、最新版(といっても更新はされてないと思うけど)と LFN patch を入手してください。patch を当てないとロングファイルネームの扱いでコケるそうです。(当てなかったことがないので詳しい挙動は分かりませんが。)

UNIX-like tools

ftp://hayabusa.ics.nara-wu.ac.jp/pub/nide/dosutil/

UNIX-like tools は 16ビットの MS-DOS アプリですが、LONG FILE NAME をまともに扱うことができるコマンド群です。*4たくさんのコマンドが移植されており、何より嬉しいのはきちんとそれぞれのコマンドに man が書かれているというところです。(ただ、この man を読むために便利な less は入っていないので、どこかから別に入手する必要があります。システム標準の MORE はさすがに使いにくいので。)

*4

純粋に MS-DOS 上で Long File Name を扱えるという意味ではありません。MS-DOS 上で扱うためにはそれ用のデバイスドライバを入れて、それに対応したプログラムを使う必要があります。UNIX-like tools だけではそこまでできません。

コマンドラインの本家、UNIX のものにかなり近いコマンドが移植されているので便利ですし、UNIX 用の参考書(書籍、Web を問わず)がけっこう役に立つでしょう。さすがにシェルスクリプトは無理ですが。(だってあれはシェルの機能だもの。KI-Shell にそんなに強力なスクリプトの機能があったかな?)ま、そこまでこだわって UNIX に近づきたい場合は別な方法を取りましょう。

一時配布先 は anonymous FTP サイトなので、きちんとメールアドレスを設定して ftp クライアントでアクセスしてください。(ブラウザでも最近のものはきちんと設定さえすれば問題なくアクセスできます。)

ダウンロードしたら、アーカイブが bzip2 形式になっているので、これを展開します。手っ取り早いのは +Lhaca のデラックス版を使うことですね。コマンドラインの布教をしているんだからコマンドライン版のプログラムを紹介すればいいのですが、圧縮や展開はファイラー経由の方が便利で楽ちんだと思っているので、そんなにこだわりはないです。興味が沸いたら自分で調べてみてください。英語のページが多いですけど、くじけたらダメです。UNIX-like tools に限らず、UNIX 系のもの、便利なものには国境はないのです。

djgpp v2

http://www.delorie.com/djgpp/

djgpp は DOS Extender*5 と呼ばれる、DOS 上で 32 ビットアプリを動かすための仕掛けを利用した開発環境のことです。gpp は g++ のことで、これは GNU の C++ コンパイラのこと。dj はこれを移植した人の名前です。

djgpp は v1 と v2 で拡張メモリへのアクセス方法が変わったので、互換性はありません。Windows 上で特別なことをせずに動かせるのは v2 の方です。*6

これは上の二つの MS-DOS アプリと違って 32ビットで動くので、性能はなかなかいいと思います。

開発環境は単にコマンドラインを使うだけなら全然必要ないんですが、より UNIX に近い環境を目指すときは、あると楽しいです。役に立つかどうかは分かりません。現に、最初の頃は入れていた私も、ディスク容量とか、面倒くさいとかの理由で入れなくなりましたから(^^;

でも自分でソースから動くプログラムを作る過程はなかなか面白いですよ。(決してプログラムを一から書くという意味じゃなくて。)

おまけ

MS-DOS の頃に、どうにかバッチファイルの機能を高められないか、ということに挑戦したソフトが何本かありました。シェルスクリプト並みとは言わないけれど、こういうソフトを補助的に使うことで、バッチファイルでもそこそこ高度な処理ができるようになりました。私自身も使っていましたが、有名なのは BU(Batch Utility) などでしょうか。ただ、これ自身が Windows 95 や LONG FILE NAME に対応したなどの情報は知らないので、実際の活用は難しいかもしれません。

ところで、Perl とか入れたい人は自分で適当に入れてください。path の設定も自動でやってくれるので、特に難しいところはないはずです。C:\Perl ってフォルダがいやだと思ったら自分で変えること。

[ ↑ content ↑ ]

wcsh

http://www.threeweb.ad.jp/~ishioka/wcsh/wcsh.shtml

Windows NT 用の CUI シェルおよびコマンド群。一部制限はありますが、9x系でも使えますし、2000でも問題なく動きます。(開発時点で2000が存在しておらず、動作確認を作者が取っていないだけ。)これは最初からある程度コマンドが入っているので、上の方法に比べてけっこう楽チンです。使い方も簡単、wcsh のアーカイブを展開して、とりあえず起動するだけです。(設定ファイルがないと怒られますが、なくても動きます。)

また、GUI vs CUI などのドキュメントも付属していますし、インストールの手順もベテラン用、初心者用に用意されているので読むだけでもけっこう楽しめます。

比較的まともな、UNIX 的な手法を目指しているため、プロセス制御などの機能もあるのですが、OS が対応していないので 9x系ではその辺の機能は使えません。Win32 アプリなので NT系では上の方法より速くて快適です。

ただ、UNIX-like tools に比べるとコマンドの数が少ないので、UNIX と MS-DOS のチャンポンのような環境になってしまいます。ま、実用上困らないとは思いますが、例えば使い方がよく分からないときなどは UNIX のコマンドと MS-DOS のコマンドの両方のリファレンスを参照する必要があります。

それがいやな場合は UNIX 用のコマンドを Windows に移植したやつを探してインストールするばいいでしょう。ま、使い始めたばかりの頃はコマンドが足りないとか、そういう次元じゃないとは思いますが。

ディレクトリの区切りに `/' (スラッシュ)を使うので、Windows に最初から用意されているプログラムのオプションスイッチを指定する場合は注意が必要。ま、たいていは `-' (ハイフン)にすれば動くと思います。ハイフンに対応していないプログラムの場合はエスケープしなきゃならない。これは面倒。

[ ↑ content ↑ ]

Aprotool(ComWin)

http://hp.vector.co.jp/authors/VA002891/indexj.htm

システム標準のプロンプトを利用しない独自のコマンドライン環境。ComWin、ToolMan Editor、Aprotool TM Editor など、呼び名がいろいろ変わりました。(ソフトウェアの性格も変わっています。)正直言って Win3.1 の頃に試しに使ってみただけで、詳細は分かりません。その頃感じたのは重いなぁだけでした。ま、機械が貧弱でしたから。(486SX-33MHz とか)

作者の方は、ComWin 用にいろいろコマンドが用意されたり、UNIX-like tools を DLL 化したり、その後いち早く(早すぎたような気もする)Unicode エディタの開発に着手されるなど、かなり意欲的な開発を続けていらっしゃるので、それを追いかけるだけでもレジストする意味はあると思います。コンピューティングの先端を行きつつ、CUI な環境へのこだわりを存分に味わえます。

基本的にはシェアウェアでの開発になりますが、古い版はフリーで公開されていたりします。

[ ↑ content ↑ ]

Cygwin

http://www.cygwin.com/

β版のときは GNU-Win32 と呼ばれていた、GNU のコマンド群を Win32 に移植したパッケージ。Windows で再現できる最強のコマンドライン環境でしょう。ちゅーか UNIX もどき化ですな。(これ以上を望む場合は VMWare かなんかで本物の追っかけをするしかないように思います。)

wcsh に比べて確かに本格的なのですが、いかんせんパッケージがずいぶん大きくなってしまって、手軽にインストールできる感じではなくなってきました。その代わり単なるコマンドライン環境ではなく、UNIX とほとんど変わらない環境を作ることができます。UNIX 用のプログラムを自分でコンパイルして動かすこともできます。

ただ、Cygwin を利用する場合、ディスクの管理は Cygwin 用の仮想のファイルシステムが基本になり、マイコンピュータの内容はその中にマウントしてアクセスすることになります。具体的には Cygwin 上では / (ルートディレクトリ)は Cygwin をインストールしたフォルダになり、C ドライブの内容全部を見るためには /cygdrive/c/ にアクセスする必要があります。ちょっと面倒ですが、このおかげで UNIX に近いファイルシステムを実現できています。

他の Win32 アプリと共用して実際に自分のデータをそこから利用する場合は、My Documents などにリンクを張っておくと使いやすいと思います。リンクの張り方とか細かいことは詳しいページを参照してください。UNIX関係のノウハウはあちこちの Web にゴロゴロしてると思います。

最近(2003年夏)私は Cygwin のアーカイブが大きくなりすぎているので、あらかじめ LAN 内の他のマシンにダウンロードしておいて、そこからインストールするようにしています。

[ ↑ content ↑ ]

その他

コマンドライン環境は UNIX 的にはシェルと呼ばれ、これは OS とユーザーの間に立ってくれる、まさに要のアプリです。Windows で言うと Explorer、Mac で言うと Finder に当たる、基本中の基本です。

で、これ、

など、いろいろあるんです。一部は MS-DOS / Windows に移植され、一部はその考え方だけが移植されています。探せばこのページで挙げた以外にも MS-DOS / Windows で動くものもあると思います。

本当はこうしたシェルと、そのうえで使うコマンドはベツモノで、シェルを変えてもコマンドに関しては別にノータッチで構わないものなのですが、MS-DOS / Windows はコマンドラインを便利に使うためのコマンドが足りなかったり、またシェルによっては独自のコマンドでないと動かなかったりして、けっきょくシェル+コマンドの両方を調達する必要があります。

また、コマンドラインの整備という意味では関係ないのですが、コマンドラインをベースにした処理の自動化を進めようと思った場合、シェルスクリプトを使ったり、awk, Perl, ruby などのスクリプト言語を揃えるとより効果的です。これらは Visual Basic や Delphi、Java などのようなマウスとウィンドウとダイアログを使ったプログラミングはできませんが、その分アルゴリズムは実際のデータの処理に集中できる分、習得は意外に楽です。(Perl や ruby では Tcl/tk だの GTK+ だの、そういうキーワードで探せば GUI プログラミングに関する情報も出てきます。)

で、こうしたツールを活用するためにはまともなエディタを用意することをオススメします。テキストエディタを使え!」なんかも参照してください。

[ ↑ content ↑ ]

ところで Mac は…

Mac 文化とマウスは切っても切れませんが、OS X は FreeBSD をベースにした Unix 系の OS ですので、当然ながら Unix のノウハウが通用します。Windows のような微妙なものではないので、素直に Unix 系の情報を漁ってください。

脚注

*1

興味があったら directory, folder のもとの意味を調べてみてください。

*2

環境変数そのものについては説明し始めると長くなるので別な機会、別なサイトに譲ります。

*3

MS-DOS の時代には、小粒でピリリと利くソフトはほとんど常駐ソフトでしたが、Windows になってからはこういう工夫はほどほどにしておいた方がいいようです。あれもこれも突っ込んだ挙句に調子を悪くしている(その割には WindowsUpdate とか基本的なことがまったくできていない)Windows マシンが世の中にはゴロゴロしてますが、えらく本末転倒な感じがします。

個人的には Windows 2000 に移行しちゃうまでのほぼ4年間、DOS時代も含めると何年だか分からないくらいに KI-Shell にはお世話になりました。

*4

純粋に MS-DOS 上で Long File Name を扱えるという意味ではありません。MS-DOS 上で扱うためにはそれ用のデバイスドライバを入れて、それに対応したプログラムを使う必要があります。UNIX-like tools だけではそこまでできません。

*5

386以上のプロセッサ、バージョン 5 以上の DOS で使える…んじゃなかったかな? DOS 上に GNU のコマンド(つまり、UNIX 用のコマンド)を移植したり、TeX などの大きなプログラムを動かすのによく利用されました。MS-DOS は CPU が 32ビットでも基本的に 32ビットの恩恵にあずかれない、困った OS でしたが、この DOS Extender を利用することで、その 32ビットアクセスによる広大なメモリ空間を利用できるようになりました。一時ファイルを利用しなくても、巨大な配列をぶん回す力技のプログラムをガシガシ動かせる。サイコー。(なお、DOS Extender には 286 用の Extender もあった…ように思う。)

*6

Win95 初期の、まだ ActivePerl のなかった頃は、DOS 版 Perl、djgpp 版 Perl、Perl for Win32 など、いろんなバージョンが乱立していたこともありました。Perl for Win32 を MS-DOS プロンプトで使うと標準出力がバグるという致命的な問題がありましたので、案外使い分けたりしていたのです。いまは ActivePerl で決まりって感じですけどね。

[ ↑ content ↑ ]