任意の祖先ディレクトリに一発でcdするcdup

Javaでプログラムを書いているとやたら深いディレクトリに入ることがよくあるけど、そんな時、上の方のディレクトリに移動するのが非常にめんどい。

たとえばこんな状況。

$ pwd 
/home/user/program/java/src/jp/co/hogehoge/sample/util

で、ビルドをするためにjavaディレクトリまで登ってantを実行する(javaディレクトリにbuild.xmlがあると想定)。

$ cd ../../../../../../
$ ant

これはさすがにバカバカしすぎると思って調べたら、cdupといういい感じのbashスクリプトがあった。

まずcdupスクリプトを読み込んでcdup関数を定義する。これはbashrc内でやっておくといい。

$ . cdup

すると次のようにしてjavaディレクトリまで一気に登れる。

$ pwd 
/home/user/program/java/src/jp/co/hogehoge/sample/util
$ cdup ja
$ pwd
/home/user/program/java

要は、引数で指定した文字列を含むディレクトリまで登るというもの。ディレクトリ名の指定は部分一致で処理してくれるのでなかなか使い勝手がいい。

ただ、こういうイレギュラーなディレクトリ移動をするコマンドを使うとEmacsのshell-modeがカレントディレクトリを正しく認識できなくなる。その場合はこのへん( http://www.emacswiki.org/emacs/ShellMode#toc8 )の処置をすれば大丈夫だろう。