指令:pushd
在不同目录间切换
在命令行模式中,当需要在不同目录中不停的切换时会发现不停的输入目录很麻烦,这个时候就需要用上pushd函数了
pushd工作原理:
pushd将指定目录压入当前shell保护的目录栈,从而可以实现多个不同路径之间的切换.
Ps:默许情况下,pushd函数可能不包括在你的Linux中,但存在于red Hat和用Red Hat驱动的系统中。
语法:
# pushd [-n] [+N | -N | dir]
参数:
-n: 只将目录加入到目录栈中,不切换目录
+N: 将第N个目录移至栈顶(+ 表示从左或上边(栈顶)数起,数字从0开始,栈顶表示为+0)
-N: 将第N个目录移至栈顶(- 表示从右或下边(栈底)数起,数字从0开始,栈底表示为-0)
dir:指定需要加入目录栈的目录,并同时切换到该目录
Ps:
1、 不带参数时pushd命令将交换目录栈栈顶的两个目录(同等于cd -)
2、 如果加入目录时没有指定目录名称,则会将当前的工作目录置入目录栈的最顶端
3、 如果加入目录时没有指定目录栈的位置,会置入目录栈的最顶端
4、 最左侧或上面表示栈顶,最右或最下面边表示栈底
5、 目录栈的第0个目录(即栈顶目录),始终是当前目录
6、 最后1个被放入堆中的目录在堆的最顶部
7、 当目录栈为空时,目录栈的栈底保存的是履行 pushd 命令时的工作目录
8、 当加入pushd和1个路径名时,将自动产生1个堆栈,内容是加入的目录名和当前工作的目录名
实例
现在有以下3个目录需要常常的切换:/doiido/boy : /home/user : /etc/sshd
1:首先将3个目录放入pushd栈中
# pushd /doiido/boy
/doiido/boy ~
# pushd /home/user
/home/user /doiido/boy ~
# pushd /etc/ssh
/etc/ssh /home/user /doiido/boy ~
2:查看栈中的内容
dirs命令是查看目录栈中的内容
# dirs -v
0 /etc/ssh
1 /home/user
2 /doiido/boy
3 ~
3:切换
3.1:在/etc/ssh和/home/user之间相互切换
# pushd
3.2:切换到/doiido/boy目录
# pushd +2
4:清空
# dirs -c
其他:
1、如果需要从目录栈中删除1个目录,则使用popd。具体详见popd使用方法
2、如果想查看目录栈中目录列表,则使用dirs。具体详见dirs使用方法