任意の祖先ディレクトリに一発でcdするcdup
Javaでプログラムを書いているとやたら深いディレクトリに入ることがよくあるけど、そんな時、上の方のディレクトリに移動するのが非常にめんどい。
たとえばこんな状況。
$ pwd /home/user/program/java/src/jp/co/hogehoge/sample/util
で、ビルドをするためにjavaディレクトリまで登ってantを実行する(javaディレクトリにbuild.xmlがあると想定)。
$ cd ../../../../../../ $ ant
これはさすがにバカバカしすぎると思って調べたら、cdupといういい感じのbashスクリプトがあった。
- https://github.com/westonruter/misc-cli-tools/blob/master/cdup オリジナル
- https://github.com/debug-ito/misc-cli-tools/blob/master/cdup 自分用にforkして手を加えたバージョン
まずcdupスクリプトを読み込んでcdup関数を定義する。これはbashrc内でやっておくといい。
$ . cdup
$ 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 )の処置をすれば大丈夫だろう。