popd和pushd使用

转自http://blog.163.com/benben_long/blog/static/199458243201211334556266/让切换目录更方便:pushd,popd,dirs,cd-一,为何要使用这几个命令?   可能大家会有疑问,为何要使用这几个命令,   难道用cd不就可以切换目录了吗?   没错,使用cd就可以切换到需要访问的目录,   但

大家好,又见面了,我是你们的朋友全栈君。

转自http://blog.163.com/benben_long/blog/static/199458243201211334556266/

让切换目录更方便: pushd,popd,dirs,cd –

一,为何要使用这几个命令?
   可能大家会有疑问,为何要使用这几个命令,
   难道用cd不就可以切换目录了吗?
   没错,使用cd就可以切换到需要访问的目录,
   但是有时会是一个路径很长,层次很多的目录,进到此目录下后,这时我们不小心运行了 cd命令,
   理所当然,我们回到了自己的home目录,这时如果想回去怎么办?

   还有:因为工作的需要,我们需要不停在几个很深层的目录之间切换,不止一个,
   那么即使有tab键帮忙,我们也会因为一个cd命令花费很多时间,如何在多个目录之间切换时能更方便些
   pushd,popd是我们的好帮手

   说明:  pushd,popd,dirs这几个我们讲到的命令是bash内建的命令,
         所以只要登录到了bash,这几个命令就可以使用了

二,如何在两个目录之间切换?

如果只是在两个目录之间切换,那么还不必使用pushd,
  这时只需使用 cd -就可以了
 
  cd -的作用是可以回到前一个目录,
  看例子:
 
  [root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/
  [root@localhost pics]# cd –
   /root
  [root@localhost ~]# cd –
   /usr/share/kde4/apps/kget/pics
  [root@localhost pics]#

  怎么样?在两个目录之间切换非常方便,无需再输入很长的路径

  说明:
  为何cd -能够回到前一个目录?
  这是因为 -在此处等同于 $OLDPWD变量,
  此问题可以参见bash的info信息,
  cd 一项有相关的说明: An argument of – is equivalent to $OLDPWD. 

$OLDPWD变量就是bash所记录的前一个目录
  也就是说:$OLDPWD和-相等
 
  下面我们再看一个例子:
  [root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/
  [root@localhost pics]# echo $OLDPWD;
  /root
  [root@localhost pics]# cd $OLDPWD
  [root@localhost ~]# echo $OLDPWD;
  /usr/share/kde4/apps/kget/pics
  [root@localhost ~]# cd $OLDPWD;
  [root@localhost pics]# echo $OLDPWD;
  /root

   我们可以得到结构:  用cd -和cd $OLDPWD都可以在最近所操作的两个目录之间进行切换


三,如何在多个目录之间切换?
  因为 cd -和 cd $OLDPWD都是只支持最近操作的两个目录,所以要在多个目录之间操作时,
  我们需要使用 pushd

  1,
  先来介绍我们会用到的3条命令

  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  ~

[root@localhost sbin]# pushd /usr/share/kde4/apps/kget/
  /usr/share/kde4/apps/kget /usr/local/sbin ~
  [root@localhost kget]# dirs -p -v
   0  /usr/share/kde4/apps/kget
   1  /usr/local/sbin
   2  ~

  说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表
              -v参数可以在目录前加上编号
              注意:有 -v时,不添加 -p也可以每行一个目录的形式显示
  说明之二:我们可以看到:最近压入堆栈的目录位于最上面

  2,如何在最近的两个目录之间切换?

   在最近的两个目录之间切换:用pushd不加参数即可

   [root@localhost kget]# pushd /boot/grub/
   /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不加参数在最近的两个目录之间切换时,
        当前目录总是位于堆栈的最上面

  3,如何在多个目录之间切换?

   用 pushd +n即可
   说明:
   n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部
   需要注意: 堆栈从第0个开始数起

   看例子:

   [root@localhost grub]# dirs -v
   0  /boot/grub
   1  /usr/share/kde4/apps/kget
   2  /usr/local/sbin
   3  ~
   [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  ~

 /boot/grub
   3  /usr/share/kde4/apps/kget

   4,如何把目录从堆栈中删除?
   用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

   说明:可以看到popd不加参数的运行情况:
        popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录
   说明之二: popd 加有参数 +n时,
   n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除

四,多学一点知识

   1,pushd和popd都可以只影响堆栈而不切换目录
     用 -n参数即可

 看例子:
    [root@localhost ~]# dirs -v
    0  ~
    1  /usr/share/kde4/apps/kget
    [root@localhost ~]# pushd -n /boot/grub
    ~ /boot/grub /usr/share/kde4/apps/kget
    [root@localhost ~]# dirs -v
     0  ~
     1  /boot/grub
     2  /usr/share/kde4/apps/kget

    2, dirs可以清空目录堆栈
      用 -c参数即可

     看例子:
     [root@localhost ~]# dirs -v
     0  ~
     1  /boot/grub
     2  /usr/share/kde4/apps/kget
     [root@localhost ~]# dirs -c

 [root@localhost ~]# dirs -v
     0  ~

     说明:  位于堆栈顶部的目录是当前目录,它不能被pop出去的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126100.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • h3c路由器远程管理_h3c无线路由器怎么设置

    h3c路由器远程管理_h3c无线路由器怎么设置H3C路由器telnet进去以后重启的命令是什么啊?在用户模式下输入,reboot建议在重启之前进行设备配置的保存。避免丢失最近的配置操作。保存设备配置命令为:在用户模式下输入,save输入以上两种命令时,均会自动弹出提示信息,要求管理员确认是否进行重启或保存配置操作,弹出提示信息后输入Y即可。Y代表确认(yes)。H3C路由交换机清除所有配置的命令是?H3C路由交换机清除所有配置的命令是:re…

    2022年10月17日
    2
  • 两个有序数组的第n大数「建议收藏」

    两个有序数组的第n大数

    2022年2月1日
    41
  • 水流量霍尔传感器工作原理_51单片机温度传感器

    水流量霍尔传感器工作原理_51单片机温度传感器硬件准备(1)YF-B1流量传感器一个(2)51开发板一个基础知识(1)YF-B1流量传感器只有三根线。即数据线、VCC、GND。数据线输出为占空比为50%的方波。当水流通过水流转子组件时,磁性转子转动并且转速随着流量的变化而成线性变化。霍尔传感器(霍尔元件采样)输出相应的脉冲信号。其流量脉冲特性计算公式为:脉冲f(Hz)=8.1x流量Q(L/min)-3。(2)51单片机的中断…

    2022年9月29日
    3
  • 微服务链路追踪有哪些_微服务网关原理

    微服务链路追踪有哪些_微服务网关原理目录Sleuth简介相关术语使用Sleuth引入依赖创建服务product-serviceorder-service启动&测试Zipkin使用Zipkin参考文章Sleuth简介Sleuth是SpringCloud的组件之一,它为SpringCloud实现了一种分布式追踪解决方案,兼容Zipkin,HTrace和其他基于日志的追踪…

    2025年8月6日
    3
  • IntelliJ IDEA 部署Tomcat服务器

    IntelliJ IDEA 部署Tomcat服务器一、部署TomcatFile—>Build,Executtion,Deployment—>Application Servers—>Apply—>ok然后点击Run—>Edit Configurations点击“+”,然后选择Tomcat Servers—>local选择Development  再选择Server  ,热处理那个选项是下…

    2022年6月13日
    31
  • 胶南人才交流中心[通俗易懂]

    胶南人才交流中心[通俗易懂]电话:0532-86164282山东胶南珠海中路273号邮编:266400

    2022年7月3日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号