Linux路径切换命令——directory stack
操作directory stack一共需要3个命令:
dirs 、pushd、popd
- dirs: 显示当前目录栈
- pushd: 把目录压栈
- popd: 把目录弹栈
dirs
显示目录栈内容,如果没有被pushd过,或者popd到底了,此时dirs会显示当前目录,就等价于pwd了
-c 清空目录栈
-l 不显示~开头的目录
[root@localhost ~]# dirs ~ ~ /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 [root@localhost ~]# dirs -l /root /root /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
-p 显示目录栈,每个条目占一行
[root@localhost ~]# dirs -p ~ ~ /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
-v 显示目录栈,每个条目占一行,并且用序号标出条目在栈中的标号
[root@localhost ~]# dirs -v 0 ~ 1 ~ 2 /tmp/dir4 3 /tmp/dir3 4 /tmp/dir2 5 /tmp/dir1
如果想把~替换掉,不能-vl一起使用。这个命令比较怪,虽有单个选项不能组合写。
[root@localhost ~]# dirs -vl -bash: dirs: -vl: invalid number dirs: usage: dirs [-clpv] [+N] [-N] [root@localhost ~]# dirs -v -l 0 /root 1 /root 2 /tmp/dir4 3 /tmp/dir3 4 /tmp/dir2 5 /tmp/dir1
pushd
上面说到dirs显示目录栈内容。即使目录栈被popd到底,提示:
[root@localhost dir1]# popd
-bash: popd: directory stack empty
目录栈实际上并没有空,此时执行dirs还是能看到目录(和pwd一样了)。如果此时pushd dir,在目录栈中dir是排在之前pwd显示目录之前的。
此时执行pushd不带参数,不带路径,会提示:
[root@localhost /]# pushd
-bash: pushd: no other directory
因为此时目录栈中只有一个目录,没办法两个目录兑换位置
pushd dir :将dir加到directory stack栈顶。入栈的过程中也会显示之前已经在栈里面的内容。并且入栈后,还会切换到这个目录(-n可以阻止这种行为)
[root@localhost dir3]# cd /tmp/dir4
[root@localhost dir4]# pushd .
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
pushd :如果不加参数,把栈顶2个条目对换位置
[root@localhost dir4]# dirs -p /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 / [root@localhost dir4]# pushd /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1 / [root@localhost dir3]# dirs -p /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1 /
pushd +N :将(从上到下,以0开始)第几个移到栈顶
pushd -N :将(从下到上,以0开始)第几个移到栈顶
[root@localhost dir3]# dirs -v 0 /tmp/dir3 1 /tmp/dir4 2 /tmp/dir2 3 /tmp/dir1 4 / [root@localhost dir3]# pushd +1 /tmp/dir4 /tmp/dir2 /tmp/dir1 / /tmp/dir3 [root@localhost dir4]# dirs -v 0 /tmp/dir4 1 /tmp/dir2 2 /tmp/dir1 3 / 4 /tmp/dir3 [root@localhost dir4]# pushd -1 / /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1 [root@localhost /]# dirs -v 0 / 1 /tmp/dir3 2 /tmp/dir4 3 /tmp/dir2 4 /tmp/dir1
popd
不加参数时,默认行为弹出栈顶目录并且换到该目录。使用-n可以不切换目录
popd +N :将(从上到下,以0开始)第几个删除,栈中原有条目位置不变
popd -N :将(从下到上,以0开始)第几个删除,栈中原有条目位置不变
[root@localhost dir4]# dirs -v 0 /tmp/dir4 1 /tmp/dir3 2 /tmp/dir2 3 /tmp/dir1 4 / [root@localhost dir4]# popd +1 /tmp/dir4 /tmp/dir2 /tmp/dir1 / [root@localhost dir4]# dirs -v 0 /tmp/dir4 1 /tmp/dir2 2 /tmp/dir1 3 / [root@localhost dir4]# popd -1 /tmp/dir4 /tmp/dir2 / [root@localhost dir4]# dirs -v 0 /tmp/dir4 1 /tmp/dir2 2 /
除了目录栈用于切换目录,还可以使用Autojump和bd
上面高级目录切换技术,即使最小化安装Linux也有。后面2中技术,需要单独安装
Autojump
Autojump使用Python编写
bd
bd:快速返回某级父目录而不用冗余地输入 “cd ../../..”