www.hj8828.com 1

每天一个Linux命令(6)&pushd popd

Linux下目录栈操作详解,linux目录详解

Linux切换目录一直都是用cd命令的,但是今天了解到目录栈操作,这个用于多目录切换简直方便太多了,

  • 先贴一条概念:
    (stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。明白概念我们就比较好理解目录栈了,就像叠罗汉一样,只能一层一层的往上放,上面的自动变成最新的栈。
  • 压入栈操作命令pushd:我想要在/usr/local/tomcat7-1这个目录,/dev这个目录和/var下进行快速切换。

    • 第一步登录服务器默认停留在~用户主目录下。现在压入一个我想要切换的目录,命令:pushd /usr/local/tomcat7-1。

      www.hj8828.com,这时我们可以看到已经切换到了/usr/local/tomcat7-1目录下了,并且输出内容为/usr/local/tomcat7-1
      ~,这时我们默认用户主目录~变成了底部栈,/usr/local/tomcat7-1目录变成了顶部栈。

    • 第二步,我们继续压入/dev目录入栈,pushd /dev
      这时当前操作目录已经变成/dev下的同时,输出目录栈顶部栈为/dev目录,
    • 第三部,我们继续压入/var到目录栈。pushd /var
      这时我们看到当前操作目录已经变成/var。并输出顶部栈为/var目录
    • 现在我们创建了一个目录栈/var, /dev, /usr/local/tomcat7-1,
      ~,从左到右依次为顶部栈,从顶部栈一直到底部栈,顺序是从左到右依次从0开始计算位置。所以顶部栈的位置为0,次顶部为1,依次往右。
    • 显示目录栈用dirs命令
    • 当前目录为/var,快速切换到次顶部栈用pushd命令,目录就会切换到/dev目录下。
    • 当前了目录是/var,快速切换到用户主目录,也就是底部栈的时候,用pushd
      +3命令。顶部栈位置为0。也可以pushd -0,从右边往左以0开始。
  • 弹出栈操作命令popd:
    目录栈弹出操作用popd命令,popd命令默认弹出顶部栈,+N:将第N个目录删除(从左边数起,数字从0开始);-N:将第N个目录删除(从右边数起,数字从0开始)。

查看评论

Linux切换目录一直都是用cd命令的,但是今天了解到目录栈操作,这个用于多目录切换简直方便太多了…

当涉及3个以上的目录时,可以使用pushd和popd实现常用的目录之间的切换。使用pushd
和 popd命令时,可以无视cd 命令

www.hj8828.com 1

pushd

  • 压入并切换路径

  ~$ pushd /var/www

执行命令后当前栈中包含 /var/www ~,并且当前目录切换到/var/www

  • 查看栈内容

  $ dirs
  • 切换至栈中的任意一个路径

dirs列出的路径从0到n进行编号,执行命令

  $ pushd +n

栈翻转并切换至n对应的目录路径

在本系列的第一部分中,我们通过讨论 cd – 命令的用法,重点介绍了 Linux
中的命令行导航。还讨论了一些其他相关要点/概念。现在进一步讨论,在本文中,我们将讨论如何使用
pushd 和 popd 命令在 Linux 命令行上获得更快的导航体验。

popd

  • 删除最后添加的路径

  $ popd
  • 删除dirs列表中指定的路径

  popd +n
  • 出栈后的当前路径

出栈后,当前路径总是为栈顶元素对应路径

在我们开始之前,值得说明的一点是,此后提到的所有指导和命令已经在 Ubuntu
14.04 和 Bash shell(4.3.11)上测试过。

pushd 和 popd 命令基础

为了更好地理解 pushd 和 popd
命令的作用,让我们先讨论堆栈的概念。想象你厨房案板上有一个空白区域,你想在上面放一套盘子。你会怎么做?很简单,一个接一个地放在上面。

所以在整个过程的最后,案板上的第一个盘子是盘子中的最后一个,你手中最后一个盘子是盘子堆中的第一个。现在当你需要一个盘子时,你选择在堆的顶部的那个盘子并使用它,然后需要时选择下一个。

pushd 和 popd 命令是类似的概念。在 Linux
系统上有一个目录堆栈,你可以堆叠目录路径以供将来使用。你可以使用 dirs
命令来在任何时间点快速查看堆栈的内容。

下面的例子显示了在命令行终端启动后立即在我的系统上使用 dirs 命令的输出:

$ dirs ~ 

输出中的波浪号(~)表示目录堆栈当前仅包含用户的主目录。

继续下去,使用 pushd 和 popd 命令来执行存储目录路径并删除它的操作。使用
pushd 非常容易 –
只需将要存储在目录堆栈中的路径作为此命令的参数传递。这里有一个例子:

pushd /home/himanshu/Downloads/ 

上述命令的作用是,将当前工作目录更改为你作为参数传递的目录,并且还将路径添加到目录堆栈中。为了方便用户,pushd
命令在其输出中产生目录堆栈的内容。因此,当运行上面的命令时,产生了以下输出:

~/Downloads ~ 

输出显示现在堆栈中有两个目录路径:一个是用户的主目录,还有用户的下载目录。它们的保存顺序是:主目录位于底部,新添加的
Downloads 目录位于其上。

要验证 pushd 的输出是正确的,你还可以使用 dirs 命令:

$ dirs ~/Downloads ~ 

因此你可以看到 dirs 命令同样产生相同的输出。