Linux命令行导航提示:pushd和popd命令的基础

在本文中,我们将讨论如何使用pushd和popd命令在Linux命令行上获得更快的导航体验....

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

在我们向前推进之前,值得分享的是,以前提到的所有说明和命令已经在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命令也产生了相同的输出。

我们再发几个pushd命令:

$ pushd /usr/lib/; pushd /home/himanshu/Desktop/
/usr/lib ~/Downloads ~
~/Desktop /usr/lib ~/Downloads ~

所以目录现在包含四个目录路径,其中主目录(〜)位于底部,用户的桌面目录位于顶部。

请记住, 的头是您目前所在的目录,这意味着现在我们目前的工作目录是〜/ Desktop。

现在,假设你想回到/ usr / lib目录,所以你要做的就是执行popd命令:

$ popd
/usr/lib ~/Downloads ~

popd命令不仅可以将当前目录切换到/ usr / lib,还可以从目录中删除〜/ Desktop,这通过输出的命令产生。 这样,popd命令将让您以相反的顺序浏览这些目录。

一些进步点

现在我们已经讨论了pushd和popd命令的基础知识了,我们继续讨论与这些命令有关的其他一些细节。 首先,这些命令还可以让您操纵目录。 例如,假设这里是您的目录的样子:

$ dirs
~/Desktop /usr/lib ~ ~/Downloads

现在,我们来说,要求是以最顶层的元素( 〜/ Desktop)到底为止,把中的目录路径顺序改变一个位置。 这可以使用以下命令来实现:

pushd +1

这就是上面命令对目录执行的操作:

$ dirs
/usr/lib ~ ~/Downloads ~/Desktop

所以我们看到目录中元素的顺序已经改变了,现在和我们想要的一样。 当然,您可以使目录元素移动任意次数。 例如,以下命令会将它们移动两次:

$ pushd +2
~/Downloads ~/Desktop /usr/lib ~

您也可以使用负指数:

$ pushd -1
/usr/lib ~ ~/Downloads ~/Desktop

类似地,您可以使用popd命令中的此技术从目录中删除任何条目,而不必离开当前的工作目录。 例如,如果要使用popd从顶部(当前为〜/下载)中删除第三个条目,则可以运行以下命令:

popd +2

请记住, 索引以0开头,所以我们使用2来访问第三个条目。

所以目录现在包含:

$ dirs
/usr/lib ~ ~/Desktop

确认条目已被删除。

如果由于某种原因,您很难记住元素位于目录中的顺序以及它们所携带的索引,则可以使用-v命令行选项和dirs命令。 以下是一个例子:

$ dirs -v
0 /usr/lib
1 ~
2 ~/Desktop

就像你可能已经看到的那样,左侧的数字是索引,跟随它们的是目录路径。

注意 :使用-c命令行选项与dirs命令清除目录。

现在我们简单讨论一下popd和pushd命令的实际用法。 虽然看起来有点复杂,但是在编写shell脚本时,这些命令会派上用场 - 你不需要记住你来自哪里; 只是做一个popd,你回到你来的目录。

经验丰富的脚本编写者通常使用以下命令:

popd >/dev/null 2>&1

上述命令确保popd保持静默(不产生任何输出)。 同样,你也可以安静的pushd。

pushd和popd命令也被Linux服务器管理员使用,Linux服务器管理员通常在几个相同的目录之间移动。 这里解释一些其他真正有用的用例。

结论

同意,pushd和popd的概念不是很直截了当。 但是,它所需要的只是一点练习 - 是的,你需要弄脏你的手。 花一些时间与这些命令,你会开始喜欢他们,特别是如果有一个用例,它们使你的生活变得容易。