在本系列的第一部分中,我们通过讨论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的概念不是很直截了当。 但是,它所需要的只是一点练习 - 是的,你需要弄脏你的手。 花一些时间与这些命令,你会开始喜欢他们,特别是如果有一个用例,它们使你的生活变得容易。