zoukankan      html  css  js  c++  java
  • cd及目录快速切换

    一、cd   ~

               切换到用户目录

    二、cd   -

              cd - 返回进入当前目录前所在目录

    三、pushd、popd、dirs

    Linux的多目录命令提示符中工作是一种痛苦的事情,但以下这些利用linux cd命令和pushd切换目录的技巧有助于你节省时间和精力 。

      用pushd实现在不同目录间切换

      在命令行模式下,当你工作在不同目录中,你将发现你有很多时间都浪费在重复输入上。如果这些目录不在同一个根目录中,你不得不在转换时输入完整的路径名,这难免让人有些难以忍受。但你可以用以下的一个或两个步骤来避免所有多余的输入:用命令行解释器中的历史记录,或者用命令行函数pushd。

      用命令行解释器中的历史记录的好处是只需按很少的键。在命令行中用向上的箭头来查找你用过的命令,直到你找到,然后按回车键。如果你所切换的两个目录在整个驱动器的子目录结构中很接近,那用解释器中的历史记录可能是你最好的选择。

      然而,如果你在两个截然不同的路径间转换的话,你可能很希望利用pushd这个函数,你可以用它创建一个目录堆栈(在内存中的一个列表)。

      注释:缺省情况下,pushd函数可能不包括在你的Linux中;但它包涵在Red Hat和用Red Hat驱动的系统中。如果你的系统中没有pushd函数,你可以在ibiblio.org网站上下载相关的函数工具。

      这里说一下怎么用pushd。假设你现在工作在/usr/share/fonts目录下。你需要对/usr/share/fonts做一些改动,你将频繁的在两个目录间切换。开始在一个目录下,用pushd函数切换到另一个目录。在我们的例子中,开始在/usr/share/fonts下,你键入pushd/opt/wonderword/fonts,然后按回车键。现在,你将在下一行看到堆栈中的内容:/opt/wonderword/fonts /usr/share/fonts。

      正如你所看到的,当你键入pushd和一个路径名时,将自动产生一个堆栈,内容是你键入的目录名和你当前工作的目录名。在我们的例子中,你所键入的路径(/opt/wonderword/fonts)在堆栈的顶部。

      快速返回上一级目录,你可以直接键入pushd,如果不跟路径名,你将返回到堆栈中前一个目录的上一层目录。

      如果你需要从堆栈中删除一个目录,键入popd,然后是目录名称,再按回车键。想查看堆栈中目录列表,键入dirs,然后按回车键。popd和dirs命令也是常用函数中的一部分。

    让切换目录更方便: 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  ~
       2  /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出去的

  • 相关阅读:
    初始化toolstrip
    XmlWriter.WriteString() problem__“.”(十六进制值 0x00)是无效的字符。
    C#使用Dotfuscator混淆代码的加密方法(转)
    新软件收钱老软件不能用的思路
    位标记
    编程的严谨性
    制作安装项目后无法保存图片
    学习泛型
    Sql Server 中一个非常强大的日期格式化函数
    淘宝api 桌面程序(cs,客户端)接入规则
  • 原文地址:https://www.cnblogs.com/wajika/p/6484160.html
Copyright © 2011-2022 走看看