Cygwin で start コマンドを使う

Windows NT/2000/XP のコマンドプロンプトを使い慣れている人(ってあまりい ないと思うが)にとっても便利なのが START というコマンド。これ、指定した ものをダブルクリックしたのと同じ効果があるのだ。start winword.exeな ら winword.exe が起動するし(あまりありがたみがないが)start paper.ps とすれば paper.ps のビューワが立ち上がる(登録してあれば)。start . とすると、カレントディレクトリのエクスプローラが起動するという寸法だ。こ れを使うと、コマンドプロンプト世界とGUI世界を自由に行き来できるようにな る。タブ補完も有効にできるので(cmd /? で説明が出る)、実はけっこう 便利なのだ。

しかし、Cygwin の bash プロンプ トから使おうと思うとちょっとむずかしい。というのは、START が cmd.exe の 内部コマンドであるうえに、(あたりまえだが)UNIX パス名を受け付けないの で、Windows パス名で (しかもバックスラッシュを倍にして) 指定しなければい けないのである。当然 bash 側のタブ補完など使えない。不便である。

ということで、/usr/local/bin/start という簡単なスクリプトをおく。中では、 Windows パス名への変換をしてから cmd.exe を起動し、内部コマンドの start を叩く。なんと便利。

#!/bin/sh
`cygpath -S -u`/cmd /c start `echo "$*" | xargs -n 1 cygpath -w` 

これさえあれば、bash プロンプトから TeX のコンパイルをしてビューワを起動 するとか、テキストエディタを立ち上げるとか、なんでもやり放題である。しか もワイルドカードも使えるから、dvi がひとつしかなければ start *.dvi で大丈夫。

エディタも登録する。普段は Dana を使っているので /usr/local/bin/dana を 作っておけば大丈夫。

#!/bin/sh
/cygdrive/c/Program\ Files/RimArts/Dana/Dana.exe \
      `echo "$*" | xargs -n 1 cygpath -w` 

もうこれなしでは Windows が使えない体になってしまった。

※ 2004/2/26 追記: cygwin には cygstart という、まったく同じ目的のプログラムがついていることが発覚しました。こっちのほうがよっぽど便利です。まあ、cygpath の使い方の例と思ってみてください。