Linux命令行工具使用小贴士及技巧(二)

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

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

pushd 和 popd 命令基础

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

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

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

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


  1. $ dirs 

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

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


  1. pushd /home/himanshu/Downloads/ 

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


  1. ~/Downloads ~ 

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

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


  1. $ dirs 
  2. ~/Downloads ~ 

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

让我们再使用下 pushd 命令:


  1. $ pushd /usr/lib/; pushd /home/himanshu/Desktop/ 
  2. /usr/lib ~/Downloads ~ 
  3. ~/Desktop /usr/lib ~/Downloads ~ 

所以目录堆栈现在包含总共四个目录路径,其中主目录(~)在底部,并且用户的桌面目录在顶部。

一定要记住的是堆栈的头是你当前的目录。这意味着现在我们当前的工作目录是 ~/Desktop。

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


  1. $ popd 
  2. /usr/lib ~/Downloads ~ 

popd 命令不仅会将当前目录切换到 /usr/lib,它还会从目录堆栈中删除 ~/Desktop,这一点可以从命令输出中看出。这样,popd 命令将允许你以相反的顺序浏览这些目录。

一些高级用法

现在我们已经讨论了 pushd 和 popd 命令的基础知识,让我们继续讨论与这些命令相关的一些其它细节。首先,这些命令还允许你操作目录堆栈。例如,假设你的目录堆栈看起来像这样:


  1. $ dirs 
  2. ~/Desktop /usr/lib ~ ~/Downloads 

现在,我们的要求是改变堆栈中目录路径的顺序,最上面的元素(~/Desktop)放到底部,剩下的每个都向上移动一个位置。这可以使用以下命令实现:


  1. pushd +1 

上面的命令对目录堆栈做的结果:


  1. $ dirs 
  2. /usr/lib ~ ~/Downloads ~/Desktop 

因此,我们看到目录堆栈中的元素顺序已经改变,并且现在和我们想要的一样。当然,你可以让目录堆栈元素移动任何次数。例如,以下命令会将它们向上移动两次:


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

你也可以使用负的索引值:


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

相似地,你可以在 popd 命令中使用此技术来从目录堆栈删除任何条目,而不用离开当前工作目录。例如,如果要使用 popd 从顶部(目前是 ~/Downloads)删除第三个条目,你可以运行以下命令:


  1. popd +2 

记住堆栈索引的初始值是 0,因此我们使用 2 来访问第三个条目。

因此目录堆栈现在包含:


  1. $ dirs 
  2.  
  3. /usr/lib ~ ~/Desktop 

确认条目已经被移除了。

如果由于某些原因,你发现你很难记住元素在目录堆栈中的位置以及它们的索引,你则可以对在 dirs 命令中使用 -v 选项。这里有一个例子:


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

你可能已经猜到了,左边的数字是索引,接下来跟的是这个索引对应的目录路径。

注意: 在 dir 中使用 -c 选项清除目录堆栈。

现在让我们简要地讨论一下 popd 和 pushd 命令的实际用法。虽然它们第一眼看起来可能有点复杂,但是这些命令在编写 shell 脚本时会派上用场 - 你不需要记住你从哪里来;只要执行一下 popd,你就能回到你来的目录。

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


  1. popd >/dev/null 2>&1 

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

pushd 和 popd 命令也被 Linux 服务器管理员使用,他们通常在几个相同的目录之间移动。 在这里介绍了一些其他有用的使用场景。

总结

我同意 pushd 和 popd 的概念不是很直接。但是,它需要的只是一点练习 - 是的,你需要多实践。花一些时间在这些命令上,你就会开始喜欢它们,特别是当它们提供了方便时。

作者:Ansh

来源:51CTO

时间: 2024-09-14 14:42:33

Linux命令行工具使用小贴士及技巧(二)的相关文章

Linux命令行工具使用小贴士及技巧(一)

相关内容 如果你刚开始在 Linux 系统中使用命令行工具,那么你应该知道它是 Linux 操作系统中功能最强大和有用的工具之一.学习的难易程度跟你想研究的深度有关.但是,无论你的技术能力水平怎么样,这篇文章中的一些小贴士和技巧都会对你有所帮助. 在本系列的文章中,我们将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快. 但是在开始下一步之前,我得强调一点,这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的.我们使用命令行 Shell 版本是 b

Linux 命令行工具使用小贴士及技巧(一)

相关内容 如果你刚开始在 Linux 系统中使用命令行工具,那么你应该知道它是 Linux 操作系统中功能最强大和有用的工具之一.学习的难易程度跟你想研究的深度有关.但是,无论你的技术能力水平怎么样,这篇文章中的一些小贴士和技巧都会对你有所帮助. 在本系列的文章中,我们将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快. 但是在开始下一步之前,我得强调一点,这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的.我们使用命令行 Shell 版本是 b

Linux 命令行工具使用小贴士及技巧(二)

在本系列的第一部分中,我们通过讨论 cd - 命令的用法,重点介绍了 Linux 中的命令行导航.还讨论了一些其他相关要点/概念.现在进一步讨论,在本文中,我们将讨论如何使用 pushd 和 popd 命令在 Linux 命令行上获得更快的导航体验. 在我们开始之前,值得说明的一点是,此后提到的所有指导和命令已经在 Ubuntu 14.04 和 Bash shell(4.3.11)上测试过. pushd 和 popd 命令基础 为了更好地理解 pushd 和 popd 命令的作用,让我们先讨论堆

Linux 命令行工具使用小贴士及技巧(四)

到目前为止,在该系列指南中,我们已经讨论了 cd - 和 pushd/popd 命令的基本使用方法和相关细节,以及CDPATH 环境变量.在这第四期.也是最后一期文章中,我们会讨论别名的概念以及你可以如何使用它们使你的命令行导航更加轻松和平稳. 一如往常,在进入该指南的核心之前,值得指出本文中的所有命令以及展示的例子都在 Ubuntu 14.04LTS 中进行了测试.我们使用的命令行 shell 是 bash(4.3.11 版本). Linux 中的命令行别名 按照外行人的定义,别名可以被认为是

Linux命令行工具使用小贴士及技巧(四)

到目前为止,在该系列指南中,我们已经讨论了 cd - 和 pushd/popd 命令的基本使用方法和相关细节,以及 CDPATH 环境变量.在这第四期.也是最后一期文章中,我们会讨论别名的概念以及你可以如何使用它们使你的命令行导航更加轻松和平稳. 一如往常,在进入该指南的核心之前,值得指出本文中的所有命令以及展示的例子都在 Ubuntu 14.04LTS 中进行了测试.我们使用的命令行 shell 是 bash(4.3.11 版本). Linux 中的命令行别名 按照外行人的定义,别名可以被认为

Linux命令行工具使用小贴士及技巧(三)

在这个系列的第一部分,我们详细地讨论了 cd - 命令,在第二部分,我们深入探究了 pushd 和 popd 两个命令,以及它们使用的场景. 继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 CDPATH 这个环境变量.我们也会讨论关于此变量的一些进阶细节. 在这之前,先声明一下此教程中的所有实例都已经在 Ubuntu 14.04 和 4.3.11(1) 版本的 Bash 下测试过. 环境变量 CDPATH 即使你的命令行所有操作都在特定的目录下 - 例如你的主目录,然而在你切

Linux 命令行工具使用小贴士及技巧(三)

在这个系列的第一部分,我们详细地讨论了 cd - 命令,在第二部分,我们深入探究了 pushd 和 popd 两个命令,以及它们使用的场景. 继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 CDPATH 这个环境变量.我们也会讨论关于此变量的一些进阶细节. 在这之前,先声明一下此教程中的所有实例都已经在 Ubuntu 14.04 和 4.3.11(1) 版本的 Bash 下测试过. 环境变量 CDPATH 即使你的命令行所有操作都在特定的目录下 - 例如你的主目录,然而在你切

终端中的乐趣:6个有趣的Linux命令行工具

终端中的乐趣:6个有趣的Linux命令行工具 之前, 我们展示了一些有关有趣的 Linux 命令行命令的文章, 这些文章告诉我们, Linux 并不像看起来那样复杂, 如果我们知道如何使用的话, 反而会非常有趣. Linux 命令行可以简洁而完美地执行一些复杂的任务, 并且十分有趣. Linux命令及Linux终端的20个趣事 Linux终端的乐趣之把玩字词计数 前者包含了20个有趣的 Linux 命令/脚本(和子命令), 得到了读者的高度赞扬. 而另一篇文章虽然没有之前那篇文章那么受欢迎,包含

用Mac和Linux命令行工具使用Windows Azure

除了Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure Web Sites和令人兴奋的新的虚拟机功能的引入,我们最近发布了一系列开放源代码的命令行工具使您可以在任何操作系统上用命令行管理和部署这些新的服务,包括第一次支持苹果 OSX 与 Linux 操作系统. 这篇文章里我将引导您完成安装和基本工具的使用,以及分享如何让你可以了解更多,甚至有利于该工具的信息 (它是开放源码的Node.js 代码,有Apache