在linux下用过命令操作的人都知道,目录切换用cd,在频繁在两个目录切换可以用 cd -
cd -为什么能返回到上一次目录?
- 在此处等同于 $OLDPWD,保存了bash所记录的前一个目录,cd - 和cd $OLDPWD效果一样
$:cd work/
~/work$:cd -
$:
$:cd -
~/work$:
这样只能在两个目录中切换,那如果需要再多个目录中切换怎么办?一直cd cd cd么,
这个时候pushd、popd是个好选择
pushd:把某目录压入栈保存并切换到该目录(方法和程序的出入栈一样)
popd:出栈,删掉该最近的目录
dirs:列出当前堆栈保存的目录列表
看个例子一目了然
hancan@hancan-virtual-machine:~$ pushd test/dir1/
~/test/dir1 ~
hancan@hancan-virtual-machine:~/test/dir1$ dirs -v
0 ~/test/dir1
1 ~
hancan@hancan-virtual-machine:~/test/dir1$ pushd /etc/
/etc ~/test/dir1 ~
hancan@hancan-virtual-machine:/etc$ dirs -v
0 /etc
1 ~/test/dir1
2 ~
hancan@hancan-virtual-machine:/etc$ pushd ~/Music/
~/Music /etc ~/test/dir1 ~
hancan@hancan-virtual-machine:~/Music$ dirs -v
0 ~/Music
1 /etc
2 ~/test/dir1
3 ~
hancan@hancan-virtual-machine:~/Music$ pushd +2 //切换到第2个目录,即dir1
~/test/dir1 ~ ~/Music /etc
hancan@hancan-virtual-machine:~/test/dir1$ dirs -v
0 ~/test/dir1
1 ~
2 ~/Music
3 /etc
hancan@hancan-virtual-machine:~/test/dir1$ popd +3 //弹出第3个目录
~/test/dir1 ~ ~/Music
hancan@hancan-virtual-machine:~/test/dir1$ dirs -v
0 ~/test/dir1
1 ~
2 ~/Musichancan@hancan-virtual-machine:~/test/dir1$ popd //不加参数则弹出最近的目录
~ ~/Music
dirs -c 也可以清空目录堆栈