linux下如何使用pushd和popd

许多Linux用户从未听说过pushd和popd,但它们已经存在了很久。它们还可以显著加快在命令行上导航目录的过程。我们将教你如何使用它们。...

许多Linux用户从未听说过pushd和popd,但它们已经存在了很久。它们还可以显著加快在命令行上导航目录的过程。我们将教你如何使用它们。

什么是推送和弹出(pushd and popd)?

BillJoy在其1978年的C Shell中的创新之一是目录堆栈的概念和操作方法:pushd和popd。模仿是最真诚的奉承,目录堆栈、pushd和popd很快就被合并到其他shell(比如Bash)甚至其他操作系统中。

堆栈的概念很简单。项目一次放一个在堆栈上,最近添加的项目总是占据顶部位置。当从堆栈中检索项时,它们将按顺序从顶部向下移除。这种性质的堆栈通常称为后进先出(LIFO)队列。

实际上,pushd和popd比这个灵活一点,但这是一个很好的模型。

当我们提到一个目录堆栈时,pushd和popd中的“d”代表“directory”就不足为奇了。这些命令允许您将目录推到或从目录堆栈中弹出。

但这对我们有什么好处呢?

pushd如何填充堆栈

使用pushd时,会发生以下三种情况:

  • 你改变目录就像你用cd一样。
  • 目录的名称和路径被添加到堆栈中。
  • 堆栈显示为以空格分隔的目录列表。

在下面的示例中,请注意目录堆栈是如何随着每个新的pushd命令而增长的。还要注意,堆栈的顶部在左侧,这是新条目出现的地方。

在第一个pushd命令之后,堆栈中有两个条目:您离开的目录和您移动到的目录。

在我们的示例中,我们键入以下内容:

pushd ~/Desktop pushd ~/Music pushd ~/Documents pushd ~/Pictures pushd ~

linux下如何使用pushd和popd

最后一个pushd命令将我们带回主目录,因此堆栈中的第一个和最后一个条目是tilde(~),它表示主目录。这表明,尽管一个目录已经在堆栈中,但它将被再次添加到其他pushd命令中。

还要注意,堆栈中最左边的条目(最近添加的条目)是当前目录。

dirs命令

可以使用dirs命令显示目录堆栈,如下所示:

dirs

linux下如何使用pushd和popd

它不影响堆栈,只是显示它。pushd可以使用的一些选项涉及堆栈中目录的位置。

如果要查看每个目录的数字位置,可以使用-v(垂直)选项,如下所示:

目录-v

linux下如何使用pushd和popd

如果希望看到主目录的指定路径而不是波浪号(~),请添加-l(长格式)选项,如下所示:

dirs -v -l

linux下如何使用pushd和popd

向堆栈中添加目录

正如我们所看到的,当您使用pushd命令时,它会做三件事:更改您的目录,将新目录添加到堆栈中,并为您显示堆栈。可以使用-n(无旋转)选项将目录添加到堆栈中,而无需更改当前目录。

这是我们的目录堆栈:

dirs -v -l

linux下如何使用pushd和popd

现在,我们将使用带有-n选项的pushd命令和/home/dave目录中的pas作为参数。然后,我们将再次检查目录堆栈。

我们键入以下内容:

pushd -n /home/dave dirs -v -l

linux下如何使用pushd和popd

/home/dave目录被添加到slot 1中的堆栈中,slot 1是堆栈中的第二个位置。它不能占据顶部位置,因为插槽0始终是当前目录。

我们没有离开当前目录~/Videos,所以它没有旋转到堆栈中的另一个位置。

通过旋转堆栈更改目录

可以使用pushd的数字参数移动到堆栈中的任何目录,这样做时堆栈会旋转。选择要移动的目录将成为堆栈中的第一个条目。

可以通过目录的位置号引用堆栈中的目录。您可以从堆栈的顶部或底部进行计数。对于正数,如+3,从顶部开始计数;对于负数,如-2,从底部开始计数。

/home/dave/Documents目录位于位置3。我们可以使用以下命令移动该目录:

pushd +3

linux下如何使用pushd和popd

我们选择的目录上方的堆栈中的目录被移动到堆栈的底部。我们选择的目录现在占据了最上面的位置,我们被移动到那个目录中。

如果要更改为堆栈底部的目录,可以使用以下命令:

pushd -0

linux下如何使用pushd和popd

最后一个目录被移动到第一个插槽,所有其他目录在堆栈中下移。我们已更改为~/Pictures目录。

popd命令

可以使用popd命令从堆栈中删除目录。

如果我们查看目录堆栈,我们可以看到位置1的目录是/home/dave。要从堆栈中删除此项,请键入以下内容将数字传递给popd:

dirs -v -l popd +1

linux下如何使用pushd和popd

/home/dave目录被删除,堆栈中位于它下面的目录都被上移了一个位置。

就像我们可以使用pushd一样,我们可以使用popd从堆栈的底部进行计数。要从堆栈中删除最后一个目录,请键入:

popd -0

linux下如何使用pushd和popd

~/Music目录将从堆栈中的最后一个位置删除。

要更改目录,请执行某些操作,然后跳回到上一个目录,可以同时使用pushd和popd。

我们将使用pushd移到另一个目录。我们将使用popd丢弃堆栈中最顶层的目录,并移动到第二个位置的目录。这是您刚移出的目录,因此您将被放回原来所在的目录。

我们键入以下内容:

pushd ~ popd

linux下如何使用pushd和popd

我们从~/Projects目录开始,推送到home目录,然后弹出回到~/Projects目录。

在整个堆栈中旋转

我们将演示如何在包含一些嵌套目录的堆栈中旋转,但是您可以在文件系统中的任何位置使用任何目录。

我们筑巢的最深层次是:

/home/dave/Projects/htg/articles

从home目录开始,我们将逐步遍历每个目录,直到到达articles目录。然后,我们来看看目录堆栈。

我们键入以下内容:

pushd ~/Projects pushd htg pushd articles dirs -v -l

linux下如何使用pushd和popd

当您重复发出pushd+1命令时,您可以在目录堆栈中循环。如果您经常这样做,pushd+1将是一个很好的别名候选者。

键入以下内容:

pushd +1

linux下如何使用pushd和popd

相关:如何在Linux上创建别名和Shell函数

踩在烟囱上

很容易恢复到旧习惯,并使用cd来更改目录。如果这样做,您将在堆栈中的第一个目录上盖章。这是不可避免的,因为第一个插槽是为当前工作目录保留的,其他位置都没有。

为此,请键入以下内容:

dirs -v -l cd ~/Music dirs -v -l

linux下如何使用pushd和popd


在您习惯了pushd和popd命令(也许,还可以使用它们来创建一些别名)之后,您将有一种在目录之间跳转的超快速方法。

这就是为什么我们要挂在命令行上。效率很高,对吧?

相关:您应该知道的37条重要的Linux命令

  • 发表于 2021-04-02 13:29
  • 阅读 ( 139 )
  • 分类:互联网

你可能感兴趣的文章

如何使用vmware虚拟机在windows中安装linux

... 在虚拟机中的Windows上安装Linux非常简单。下面介绍如何在VMware Workstation上逐步安装Linux。 ...

  • 发布于 2021-03-13 10:39
  • 阅读 ( 252 )

如何在linux上安装chrome并从windows轻松迁移浏览

... 如何在linux上安装chrome ...

  • 发布于 2021-03-14 09:04
  • 阅读 ( 288 )

您应该知道的基本windows cmd命令

...符不仅要有一个命令词典,还要了解每个参数的含义以及如何将不同的参数组合起来以达到预期的效果。 ...

  • 发布于 2021-03-15 18:07
  • 阅读 ( 331 )

如何使用windows subsystem for linux运行linux桌面

... 下面介绍如何使用Windows子系统在Windows中运行Linux桌面。 ...

  • 发布于 2021-03-18 04:14
  • 阅读 ( 234 )

如何在windows10上获得linux bash shell

... 如何在windows10上安装linux bash shell ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 287 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 276 )

关于linux最常见的问题。。。回答

...也是免费的。不仅如此,你还可以自由地看看这些程序是如何**的。如果您有专业知识,您可以使用此代码创建自己的软件。 ...

  • 发布于 2021-03-25 12:19
  • 阅读 ( 195 )

如何在linux下访问和使用windowscdrive

你在你的电脑上运行Linux,但你也安装了Windows。这是一个双引导,但有时您希望在两个操作系统之间共享数据。 ...

  • 发布于 2021-03-26 10:17
  • 阅读 ( 203 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 334 )

如何在不安装DistorTest的情况下测试任何linux发行版

... 如何在浏览器上使用DistorTest ...

  • 发布于 2021-03-27 01:33
  • 阅读 ( 232 )
你忙吧t
你忙吧t

0 篇文章

相关推荐