1 问题
我们有时候需要保存多个路径,上下键切换不方便,用cd-只能到上个目录,我们可以用dirs和pushd和popd
2 dirs、pushd、popd
dirs: 这个命令显示栈里面所有的路径,一定会包含当前路径,常用参数如下
dirs -v 显示栈里面的所有路径和下标,通过下标,我们可以用pushd +下标到这个目录,然后popd+下标把这个路径在栈里面弹出来,
dirs -c 清除栈里所有路径,但是当前路径不会删除
pushd:我们可以添加目录到栈(dirs)里面,比如添加当前目录pushd . 然后如果需要到栈里面具体哪个路径的话我们可以pushd +下标,如果是-下标的话,我们是从栈底算起
popd:我们可以弹出栈的最上面的一个路径,我们也可以popd +n弹出栈里面指定的具体路径,如果是-下标的话,我们是从栈底算起
3 使用过程
比如我们在当前目录下新建立4个文件夹dir1、dir2、dir3、dir4
我们cd到dir1里面去,然后把当前路径再添加进去pushd .
我们cd到dir2里面去,然后把当前路径再添加进去pushd .
我们cd到dir3里面去,然后把当前路径再添加进去pushd .
我们cd到dir4里面去,然后把当前路径再添加进去pushd .
我们再查看dirs -v
0 ~/Desktop/linux/dabian/shell/cat/push/dir3
1 ~/Desktop/linux/dabian/shell/cat/push/dir3
2 ~/Desktop/linux/dabian/shell/cat/push/dir4
3 ~/Desktop/linux/dabian/shell/cat/push/dir2
4 ~/Desktop/linux/dabian/shell/cat/push/dir1
很明显当前目录是dir3,比如我们现在要去dir2,我们直接执行pushd +3 再执行dirs -v看下
0 ~/Desktop/linux/dabian/shell/cat/push/dir2
1 ~/Desktop/linux/dabian/shell/cat/push/dir1
2 ~/Desktop/linux/dabian/shell/cat/push/dir3
3 ~/Desktop/linux/dabian/shell/cat/push/dir3
4 ~/Desktop/linux/dabian/shell/cat/push/dir4
很明显我们可以看到当前目录是dir2
比如我们执行下popd,弹出最顶层的那个,目录会切换到最dir1,我们再看下dirs -v
0 ~/Desktop/linux/dabian/shell/cat/push/dir1
1 ~/Desktop/linux/dabian/shell/cat/push/dir3
2 ~/Desktop/linux/dabian/shell/cat/push/dir3
3 ~/Desktop/linux/dabian/shell/cat/push/dir4
然后我们删除dir4看下,popd +4,然后我们再dirs -v看下
0 ~/Desktop/linux/dabian/shell/cat/push/dir1
1 ~/Desktop/linux/dabian/shell/cat/push/dir3
2 ~/Desktop/linux/dabian/shell/cat/push/dir3
很明显当前目录在dir1,我们切换到dir3里面去,pushd +2 然后dirs -v看下
0 ~/Desktop/linux/dabian/shell/cat/push/dir3
1 ~/Desktop/linux/dabian/shell/cat/push/dir1
2 ~/Desktop/linux/dabian/shell/cat/push/dir3
可以看到到了dir3这个目录了,我们再清除所有的栈里面的路径dirs -c,然后我们再dirs看下
~/Desktop/linux/dabian/shell/cat/push/dir3
在当前目录了,没毛病。