startコマンドは便利ですが

結論から言うと,cygpathなるコマンドがあります,という話です。


whitypigさんは2008年5月28日の日記
http://d.hatena.ne.jp/whitypig/20080515
にて書きました。

cygwin には,cygstart なるものがある!!

man みて,はい,コレに決定。ちゃっちゃと,
ln -s /usr/bin/cygstart /usr/local/bin/start 
しちゃいな。だって,cyg って打鍵するの苦手なんです。

はい,使ってます。
で,cygwinで,

% start c:

とかやると,エクスプローラでCドライブを開いてくれるわけですが,
わたくし,ファイラーは,MDIEを使わせてもらっているわけでして,
ちょいと不便なわけですよ。くわえて,Windowsパスを入力するのには,
/cygdrive/c/ほにゃららとかやる必要あるので,しんどいと。
シンボリックリンクにも対応してないです。


そこで,cygpathのご登場です。
つまり,~/bin/mdieという名前でファイルを作成して,

#!/bin/sh

if [ $# -eq 0 ]
then
	echo "mdie: the num of arguments should be greater than 0, but received 0."
	echo "usage: mdie directory";
	exit 1
fi

/cygdrive/c/opt/mdie0300RC4_1/MDIE.exe "$(cygpath -aw $@)"

と書き込んで,実行可能にすると。
シェルスクリプトがたぶんおそまつなので,そのへんは突っ込んでもらったり,
見逃してもらったりするということで,おいといてと。


これで,

% mdie ~/desktop@windows

みたいにすると,MDIEでデスクトップを開いてくれると。
わー,パチパチ。


以下,man cygpath と,ちょっこすな解説。

CYGPATH(1)                          CYGWIN                          CYGPATH(1)

NAME
       cygpath  -  Convert  Unix  and Windows format paths, or output system
       path information

Unix形式,Windows形式のパスの変換やりまっせ。
つぎにオプションの抜粋。

SYNOPSIS
       cygpath (-d|-m|-u|-w|-t TYPE) [-f FILE] [OPTION]... NAME...
       cygpath [-c HANDLE]
       cygpath [-ADHPSW]

       -u, --unix
              (default) print Unix form of NAMEs (/cygdrive/c/winnt)

       -w, --windows
              print Windows form of NAMEs (C:\WINNT)
   Path conversion options:
       -a, --absolute
              output absolute path


MDIEに渡すためにパスを私ためには,
cygstartコマンドにWindows形式で絶対パスを渡す必要があるので,
「cygpath -aw $@」となるわけですね。

もっとやるなら,MDIE.exe にシンボリックリンクを張って,
cygpath経由で実行するとか。


というわけで,知っている人は多いかと思われますが,
知らない人は,ぜひどうぞ。便利ですので。


今回もmanを書いた人,cygwin作っている人に感謝感謝。