linux pushd、popd 命令
-
-
# pushd 和 popd 一般用于【切换到最近的目录】,而且栈中最好不要多于三个目录 # 问为什么不用 cd - 呢? —— 因为层级问题 $ cd a $ cd b $ cd c $ pwd ~/a/b/c # 若是现在执行 cd -,只会返回到 ~/a/b 目录 # 若要返回到 a 目录呢? —— cd - 无法一步达成,pushd 和 popd 可以实现 # 首先压栈 $ pushd ~/a # 若当前处于 c 目录,直接一步返回到 ~/a 目录,下面两种方法都可以 $ pushd # 不删除堆栈 $ popd # 删除堆栈中信息
-
pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中 如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换 popd: 弹出堆栈中最近的目录 dirs: 列出当前堆栈中保存的目录列表 # 举例 [root@localhost ~]# pushd /usr/local/sbin/ /usr/local/sbin ~ [root@localhost sbin]# dirs /usr/local/sbin ~ [root@localhost sbin]# dirs -p -v 0 /usr/local/sbin 1 ~ # pushd 详解 如何在最近的两个目录之间切换? —— 在最近的两个目录之间切换:用pushd不加参数即可 说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,当前目录总是位于堆栈的最上面 [root@localhost kget]# pushd /boot/grub/ # pushd 后面可以指定目录 /boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~ [root@localhost grub]# dirs -v 0 /boot/grub 1 /usr/share/kde4/apps/kget 2 /usr/local/sbin 3 ~ [root@localhost grub]# pushd # 切换最近的目录 就是栈顶 /usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~ [root@localhost kget]# dirs -v 0 /usr/share/kde4/apps/kget 1 /boot/grub 2 /usr/local/sbin 3 ~ [root@localhost kget]# pushd # 切换最近的目录 就是栈顶 /boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~ [root@localhost grub]# dirs -v 0 /boot/grub 1 /usr/share/kde4/apps/kget 2 /usr/local/sbin 3 ~ 如何在多个目录之间切换?—— 用 pushd +n即可 # 查看当前目录栈 [root@localhost grub]# dirs -v 0 /boot/grub 1 /usr/share/kde4/apps/kget 2 /usr/local/sbin 3 ~ # 切换到 /usr/local/sbin 目录 [root@localhost grub]# pushd +2 /usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget # 可以看到切换成功 [root@localhost sbin]# dirs -v 0 /usr/local/sbin 1 # pop 详解 如何把目录从堆栈中删除? —— 用popd即可 [root@localhost sbin]# dirs -v 0 /usr/local/sbin 1 ~ 2 /boot/grub 3 /usr/share/kde4/apps/kget [root@localhost sbin]# popd ~ /boot/grub /usr/share/kde4/apps/kget [root@localhost ~]# dirs -v 0 ~ 1 /boot/grub 2 /usr/share/kde4/apps/kget [root@localhost ~]# popd +1 ~ /usr/share/kde4/apps/kget [root@localhost ~]# dirs -v 0 ~ 1 /usr/share/kde4/apps/kget # dirs 详解 [root@localhost kget]# dirs -p -v 0 /usr/share/kde4/apps/kget 1 /usr/local/sbin 2 ~ 说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表 -v参数可以在目录前加上编号 注意:有 -v时,不添加 -p也可以每行一个目录的形式显示 说明之二:我们可以看到:最近压入堆栈的目录位于最上面 dirs可以清空目录堆栈 用 -c参数即可 [root@localhost ~]# dirs -c [root@localhost ~]# dirs -v # 说明: 位于堆栈顶部的目录是当前目录,它不能被pop出去的 0 ~ # 其他说明 pushd和popd都可以只影响堆栈而不切换目录,用 -n参数即可
-