bash快速切换常用目录
场景
你发现你需要在两个或更多个目录之间来回跳转,如果两个目录之间差别较大,反复输入冗长的路径名特别累。
解决方案
dirs命令可以查询当前的路径名的栈,pushd和popd就是对这个栈进行操作。
user@ubuntu:~$ dirs
~
user@ubuntu:~$ pushd /etc/init.d
/etc/init.d ~
user@ubuntu:/etc/init.d$ dirs -v
0 /etc/init.d
1 ~
user@ubuntu:/etc/init.d$ popd
~
user@ubuntu:/etc/init.d$ dirs -p
~
讨论
- pushd就是切换到新的路径,并将新的路径压入栈,而popd是弹出栈顶路径,并切换到新的栈顶的路径。
- pushd不接参数时就是将栈顶的两个元素相互交换,并切换到相应的路径,也可以通过cd -实现。
- pushd -n new_dir可以实现不切换新目录,当前栈顶元素仍然不变,但仍然将新目录压入除了栈顶元素的之外的元素的顶部,即将新路径作为栈顶第二位。
- popd -n保持当前路径和栈顶元素不变,弹出栈顶第二位的元素。
- pushd +2就是代表将dirs得到的结果从左到右对应下标的路径移动到栈顶,其他的元素保持原来的顺序压入,如果pushd -2则是按照dirs的结果从右到左的顺序来处理。
- popd +2和popd -2按照类似的逻辑处理。