ディレクトリ移動を少し楽にする

なにか作業をしていて、複数のディレクトリ間を行き来することがちょこちょこあり、その際に便利そうなものを見つけたので少しメモ。

$OLDPWD

作業していて、直前にいたディレクトリに戻る場合、それが1つ上のディレクトリだったら../で済むんですが…
そうでない場合、長いパスを打ったりするのが面倒。
そこで覚えておくと便利なのが$OLDPWD
直前にいたディレクトリを記憶している変数。簡単な使い方は下のとおり。


user@host:~$ tmp
~/tmp
user@host:~/tmp$ cd $OLDPWD
user@host:~$

cd -

と、紹介しておきながら、$OLDPWDってこれも結構打つのが面倒ですね…(・ω・`)
が、また便利なものがあって、 "cd -" とすれば "cd $OLDPWD"と同じ操作ができます。


user@host:~$ cd tmp
user@host:~tmp$ cd -
/home/user/
user@host:~$

pushd, popd

上の2つだと、直前のディレクトリしか記憶できないので、3以上のディレクトリを移動しながら作業しないといけない場面では少し使い勝手が悪いです。
その場合はpushd, popdコマンドを使うのがいいです。
簡単に使い方を示しておきます。


user@host:~$ pushd /etc/httpd/conf/
/etc/httpd/conf ~
user@host:/etc/httpd/conf$ pushd ~/public_html/cgi-bin/
~/public_html/cgi-bin/ /etc/httpd/conf ~
user@host:~/public_html/cgi-bin$ popd
/etc/httpd/conf ~
user@host:~$ popd
~
user@host:~$ popd
bash: popd: directory stack empty
user@host:~$
ちなみに、dirsコマンドを使うとディレクトリスタックに積まれているディレクトリを見ることができます。
オプション無しだと、pushd,popdのときと同じく、空白区切りで出力されますが、

$ dirs -l
とすると、1行ごとの出力になるので、こちらのほうが見やすいと思います。