Bash下可以使用”cd -”来实现在当前目录和上一次访问的路径间切换。 如果我们需要回退多级目录怎么实现呢?

Bash有两个内置命令pushd和popd,每次调用它们,系统会把当前目录压入目录栈中保存起来,或者从栈顶弹出一级目录并进入那个目录。利用这两个命令可以实现访问路径的存储与调用。为了使用方便可以在~/.bashrc中创建一个自己的命令,例如

1
2
3
4
5
6
function cd {
    if [ -n "$1" ]; then pushd $1 > /dev/null
     else pushd $HOME > /dev/null
    fi
}
alias pd='popd > /dev/null'

这里创建的cd函数覆盖了built-in的cd命令,可以自动保存当前路径到栈中。而调用pd命令则可以返回上次访问的目录。

如果我们想恢复系统默认的cd命令怎么办呢?可以使用“unset -f cd”来取消自定义的cd函数。

参考:
1. http://www.mollison.us/blog/2009/08/24/go-back-in-bash/
2. http://stackoverflow.com/questions/245406/how-do-i-delete-a-bash-function