CygwinつかっていてWin32のコンソールアプリ(Ruby.exeとかPHP.exeとかPython.exe)をCygwinのBashから使うのにすごく重宝するCygpath。Cygpathについて知らないことが多い
おさらい。cygpathとは何か
cygpathはUNIXパスからWindowsパスの変換,またその逆の変換を行うことが出来る.Cygpathを使うと,Cygwinのマウントポイントを考慮したパスが取れるので便利ですね.
基本の使い方
使い方は習うより慣れろ.
更に便利な使い方
バックスラッシュを使わない
移植性を考慮すると, -w より -m:mix モードの方がとても便利
takuya@letsnote:~$ cygpath -a -m . C:/Users/takuya
コピペがしやすい。
バックスラッシュなしでもWindows(エクスプローラー)は大丈夫。Bashでの苦労が無くなる
Bashのバックスラッシュはエスケープ文字列で、cygpathの変化結果をコピペできない.以前、コピペ出来無いって書かれたブログを見かけたけどCygpathでもちゃんとコピペ対応の文字列が出る
デスクトップディレクトリが欲しい
-D / --desktop オプションがある
takuya@letsnote:~$ cygpath -Dm C:/Users/takuya/Desktop takuya@letsnote:~$ cygpath -Du /home/takuya/Desktop
今いるディレクトリのWindowsパス名を知りたい
pwd を組み合わせて使う
takuya@letsnote:~/Desktop/google$ cygpath -m `pwd` C:/Users/takuya/Desktop/google
ファイルのパス名をWin形式にしたい
特定のファイルが対象でも出来ます
takuya@letsnote:~/Desktop$ cygpath -am ~/.bashrc C:/Users/takuya/.bashrc
system32 のパス名を取出したい
takuya@letsnote:~/Desktop$ cygpath -Sm C:/Windows/System32
惜しむべきは programfilesの扱い
よく使う system32とProgram FilesディレクトリにCygpathでアクセス出来ないこと
これ環境変数を経由してこうやる
takuya@letsnote:~$ cygpath -am "$PROGRAMFILES" C:/Program Files
Sambaやファイルサーバーのパスも
ネットワーク越しにも行ける
takuya@letsnote:~/Desktop$ cygpath -w //192.168.2.5/takuya/ \\192.168.2.5\takuya\
ネットワーク越しはもともと //でアクセス出来るのでcygpath使うことはあまりないけど.
ファイルパスをクリップボードにコピーしたい
/dev/clipboardつかう
takuya@letsnote:~/Desktop$ cygpath -am ~/.vimrc > /dev/clipboard #=> C:/Users/takuya/.vimrc がクリップボードにあるよ!!
おまけ
cygstart と組み合わせて使うと幸せになれるよ
デスクトップを開くなら
cygstart `cygpath -D`
さらにおまけ
alias open=cygstart
と書いておくとMacっぽくOpenでファイルが開けるよ.
open //192.168.2.5/takuya open ~/日記.txt open `pwd` open `cygpath -O`
とか便利です