シェルでディレクトリの上下移動を楽する

スポンサード リンク

シェルで1つ上のディレクトリに移動しようと思ったら,普通は cd .. する。さて,深いディレクトリから脱出したいときは,いくつ上のディレクトリまでなら許容できるだろうか。

$ cd ..  # 1個上
$ cd ../..  # 2個上
$ cd ../../..  # 3個上
$ cd ../../../..  # 4個上
$ cd ../../../../..  # 5個上
$ cd ../../../../../..  # 6個上
$ cd ../../../../../../..  # 7個上
$ cd ../../../../../../../..  # 8個上
$ cd ../../../../../../../../..  # 9個上

僕は4個上が限界です。それ以上だと間違いが激増する。

そこで N 個上のディレクトリに移動する u コマンドをエイリアスで作ってみた。

alias u='cd ../; LASTU="u"'
alias uu='cd ../../; LASTU="uu"'
alias uuu='cd ../../../; LASTU="uuu"'
alias uuuu='cd ../../../../; LASTU="uuuu"'
alias uuuuu='cd ../../../../../; LASTU="uuuuu"'
alias uuuuuu='cd ../../../../../../; LASTU="uuuuuu"'
alias uuuuuuu='cd ../../../../../../../; LASTU="uuuuuuu"'
alias uuuuuuuu='cd ../../../../../../../../; LASTU="uuuuuuuu"'

こうすると,

~/too/deep/directory/to/move/around/with/normal/cd/command $ uuuu
~/too/deep/directory/to/move/around $

てな感じで,4個上でも楽に移動できる。

それでも間違ったときのために N 個下に戻る r コマンドも定義しておこう。

alias r='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/u//`; '
alias rr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uu//`; '
alias rrr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uuu//`; '
alias rrrr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uuuu//`; '
alias rrrrr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uuuuu//`; '
alias rrrrrr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uuuuuu//`; '
alias rrrrrrr='test "$LASTU" != "" && cd - > /dev/null 2>&1 && eval `echo $LASTU |sed -e s/uuuuuuu//`; '

これで上下移動が楽チンになった。

~/too/deep/directory/to/move/around/with/normal/cd/command $ uuuu
~/too/deep/directory/to/move/around $ rr
~/too/deep/directory/to/move/around/with/normal $ r
~/too/deep/directory/to/move/around/with/normal/cd $

便利。

Comments !

social