Bash下的目录回退
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

Leave a Reply