文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
无论是Mac还是Linux,其实都一样,在终端下经常都需要进行目录的切换,但每次都用cd
命令有点太繁琐了,特别是在目录很长,文件夹名字很长的情况下。本文主要是对终端下的一些目录切换名字的总结。
1. 两个目录之间的切换
-
代表的是前一个目录,如果只在两个目录中切换,这个命令就够了,-
等价于$OLDPWD
,$OLDPWD
也是前一个目录。其目录切换的形式如下:
$ cd ~/MyEclipse/
$ cd -
/Users/***/Hexo
$ cd -
/Users/***/MyEclipse
$ cd -
/Users/***/Hexo
$ cd -
/Users/***/MyEclipse
2. 多个目录之间的切换
多个目录的切换要用到pushd,popd,dirs命令,下面是三个命令的解释:
-
dirs:显示目录栈
-
pushd:将目录压入目录栈,并切换目录(虚拟堆栈)
-
popd:将目录弹出目录栈,并切换目录(虚拟堆栈)
多余的话不说,直接上例子更直观:
# pushd会将参数目录和当前目录压入目录栈(虚拟堆栈)中,并跳转到参数目录,压入目录栈是按顺序压入的,~是当前用户的根目录
$ pushd Hexo
~/Hexo ~
$ pwd
/Users/***/Hexo
# pushd不加参数,回到前一个目录,并将当前目录压入目录栈中
$ pushd
~ ~/Hexo
$ pwd
/Users/***
# dirs查看目录栈中的目录
$ dirs
~/Hexo ~
# dirs -v显示目录的编号,并将目录按行排列,0代表新压入目录栈的目录
$ dirs -v
0 ~/Hexo
1 ~
# 压入一个新的目录到目录栈
$ pushd MyEclipse/
~/MyEclipse ~ ~/Hexo
$ pwd
/Users/***/MyEclipse
# dirs -p是按行显示目录栈中的目录
$ dirs -p
~/MyEclipse
~
~/Hexo
# popd是将栈顶的目录弹出,即编号为0的目录,并将目录切换到目录弹出后的栈顶目录
$ popd
~ ~/Hexo
$ pwd
/Users/***
$ popd
~/Hexo
# 如果栈中只有一个目录,即当前目录,是不能使用popd的
$ popd
-bash: popd: directory stack empty
# 如果栈中只有一个目录,是不能使用pushd的
$ pushd
-bash: pushd: no other directory
# dirs -c 清空目录栈,只剩当前目录在目录栈中
dirs -c
$ pushd MyEclipse/
~/MyEclipse ~
$ pushd ~/Hexo/
~/Hexo ~/MyEclipse ~
$ pushd ~/Practice/
~/Practice ~/Hexo ~/MyEclipse ~
$ dirs -v
0 ~/Practice
1 ~/Hexo
2 ~/MyEclipse
3 ~
# popd +n 弹出目录栈中指定位置的目录,并将目录切换到栈顶目录
$ popd +2
~/Practice ~/Hexo ~
$ dirs -v
0 ~/Practice
1 ~/Hexo
2 ~
# push +n 将目录切换到指定位置的目录,并将其压入目录栈栈顶
$ pushd +2
~ ~/Practice ~/Hexo
$ dirs -v
0 ~
1 ~/Practice
2 ~/Hexo
备注:如例子所示,如果只有两个目录的情况下,可以一直用pushd切换目录。
网友评论