【Linux命令】pushd、popd 实现目录快速跳回(优于cd -)

linux pushd、popd 命令

  • popd和pushd使用

    • # 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参数即可
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值