您的位置:

pushdpopd命令详解

一、pushdpopd基础概念

$ pushd [-n] [-q] [dir]
$ popd [-n] [+n | -n]
$ dirs [-clpv]

pushd和popd是Linux中的两个命令,在日常终端操作中经常用到。它们的功能是用于快速地切换目录,方便命令行使用者快速地在系统内移动。

在Linux终端中,如果需要经常在不同的目录之间切换,使用cd命令一个一个地输入路径显然很麻烦,这时候我们就可以使用pushd、popd来实现目录切换的快速跳转。

二、使用pushd和popd快速跳转目录

1、pushd命令用法:

$ pushd [-n] [-q] [dir]

该命令可以将指定的目录压入目录堆栈,达到快速跳转的目的。与之对应的命令为popd,用于弹出目录堆栈中最上方的目录,达到快速回到之前所在的目录的效果。

下面我们结合实例来了解pushd、popd的用法。假设我们现在在/home/user1目录下,希望快速跳转到/home/user2目录下,并查看当前目录。

$ pwd
/home/user1
$ pushd /home/user2
~/user2 ~
$ pwd
/home/user2
$ popd
~/user1 ~
$ pwd
/home/user1

首先我们在user1目录下,在终端输入pushd /home/user2命令,系统会快速跳转到user2目录下,并显示出当前目录。接着我们通过popd命令将之前的目录user1弹出目录栈,达到快速回到user1目录的效果。最后再次查看当前目录,终端显示我们已经回到了user1目录下。

2、pushd和popd参数说明:

  • -n:不执行cd操作。默认情况下,pushd命令将当前目录压入堆栈并执行cd命令切换到指定目录,使用-n参数可以避免cd操作。
  • -q:安静模式。该参数设置后,将不会打印目录堆栈信息。
  • +n:指定弹出目录堆栈中从栈底开始的第几个目录。
  • -n:指定弹出目录堆栈中从栈顶开始的第几个目录,这里的n必须为正整数。

三、dirs命令查看目录堆栈

$ dirs [-clpv]

dirs命令用于查看目录堆栈的内容。默认情况下,dirs命令将会显示所有在目录堆栈中的目录,用空格分割每个目录。目录堆栈是以数字编号形式存储的,当前目录堆栈中最新的目录被编号为0,向上递增。

下面我们来结合实例使用dirs命令查看目录堆栈的内容。

$ pushd /home/user1
~/user1 ~
$ pushd /usr/local
/usr/local ~/user1 ~
$ dirs
/usr/local ~/user1 ~

在这个例子中,我们在user1目录下执行pushd /usr/local命令,接着执行差价dirs命令来查看目录堆栈的内容。dirs命令依次输出了栈底(/usr/local)到栈顶(~)的目录信息。

dirs的参数说明:

  • -c:清空目录堆栈。
  • -l:使用详细格式化输出结果。
  • -p:输出堆栈中的绝对路径。
  • -v:显示完整的目录名称,包含目录权限以及软链接等信息。

四、使用示例:利用pushd、popd命令快速切换目录

1、创建测试目录

$ mkdir -p ExampleDir/FirstDir/SubDirA
$ mkdir -p ExampleDir/FirstDir/SubDirB
$ mkdir -p ExampleDir/SecondDir/SubDirA
$ mkdir -p ExampleDir/SecondDir/SubDirB

在/home/user目录下创建ExampleDir目录,并在其下创建四个子目录FirstDir/SubDirA、FirstDir/SubDirB、SecondDir/SubDirA和SecondDir/SubDirB。

2、使用pushd、popd命令切换目录

$ pushd ExampleDir/FirstDir/SubDirA
~/ExampleDir/FirstDir/SubDirA ~/ 
$ pushd ../../SecondDir/SubDirB
~/ExampleDir/SecondDir/SubDirB ~/ExampleDir/FirstDir/SubDirA ~/
$ cd .. && dirs -c
$

在这个例子中,我们首先执行pushd ExampleDir/FirstDir/SubDirA命令,终端提示我们目录已经切换到了~/ExampleDir/FirstDir/SubDirA,此时我们执行dirs命令查看目录堆栈,可以看到仅有一个元素。

接着我们执行pushd ../../SecondDir/SubDirB,目录又快速切换到了~/ExampleDir/SecondDir/SubDirB,dirs命令查看目录堆栈可以看到两个元素,分别是~/ExampleDir/SecondDir/SubDirB和~/ExampleDir/FirstDir/SubDirA。

最后我们使用cd ..回到父目录,并用dirs -c清空目录堆栈,最后dirs命令查看目录堆栈结果为空。

五、总结

通过本篇文章的阐述,我们深入了解了pushdpopd命令的定义和基本用法,也学会了使用dirs命令查看目录堆栈的内容。pushdpopd命令是实际工作中非常实用的命令,节省了用户在多个目录中反复使用cd命令的时间,大大提高了工作效率。