pushd
和popd
是允许您使用目录堆栈并在Linux和其他类似Unix的操作系统中更改当前工作目录的命令。尽管pushd
和popd
是非常强大和有用的命令,但它们却被低估并且很少使用。
在本教程中,我们将向您展示如何使用pushd
和popd
命令导航系统的目录树。目录堆栈是您先前浏览过的目录的列表。使用dirs
命令可以看到目录堆栈的内容。
使用pushd
命令切换到目录时,目录会添加到堆栈中,而使用popd
命令会从堆栈中删除目录。
当前工作目录始终位于目录堆栈的顶部。 当前工作目录是用户当前正在其中的目录文件夹。每次与命令行交互时,您都在一个目录中工作。
pwd
命令可让您找出当前所在的目录。在文件系统中导航时,使用Tab
键自动完成目录名称。在目录名称的末尾添加斜杠是可选的。
pushd
,popd
和dirs
是shell内置程序,在不同的shell中其行为可能略有不同。我们将介绍命令的Bash内置版本。
pushd
命令
pushd
命令的语法是pushd [OPTIONS] [DIRECTORY]
。其中OPTIONS
是pushd
命令的选项,DIRECTORY
是可选参数,指定目录。
例如,要将当前目录保存到目录堆栈的顶部并同时切换到/var/www
目录,您可以运行命令,这其实相当于使用cd命令切换目录:
pushd /var/www
成功后,以上命令将打印目录堆栈。 ~
是我们执行pushd
命令的目录。~
表示当前用户家目录。
pushd
首先将当前工作目录保存到堆栈的顶部,然后切换到指定的目录。由于当前目录必须始终位于堆栈的顶部,因此更改后,新的当前目录将移至堆栈的顶部。
但不会保存在堆栈中。要保存它,您必须从中调用pushd
。如果您使用cd
切换到另一个目录,则堆栈的顶部将丢失。
pushd
命令接受两个选项,+N
和-N
,可用于导航到堆栈的Nth
目录。 +N
选项更改为堆栈列表的Nth
元素,从零开始从左到右计数。使用-N
时,计数方向是从右到左。
为了更好地说明这些选项,请先运行命令dirs -l -v
打印当前目录的堆栈,输出将显示目录堆栈的索引列表:
0 /opt
1 /usr/local
2 /var/www
3 /home/myfreax
如果要更改到/var/www
目录,并将其移到堆栈的顶部。从上到下或从左到右计数时,目录的索引为2
,请运行命令pushd +2
不带任何参数使用pushd
时,将切换前上一目录,并使新的前一个目录成为当前目录。这与使用cd -
命令时相同。
从下到上计数时,/var/www
目录的索引为1
,因此命令pushd -1
。
popd
命令
popd
命令采用形式是popd [OPTIONS]
。不带参数使用时,popd
从堆栈中删除顶层目录,并导航到新的目录。
与pushd
相同,popd
也接受+N
和-N
选项,这些选项可用于删除堆栈的Nth
目录。
假设我们有目录堆栈/opt /usr/local /var/www /etc/nginx ~
。如果运行popd
命令,它将从堆栈中删除/opt
并切换到/usr/local
目录。
popd
输出将显示新的目录堆栈/usr/local /var/www /etc/nginx ~
。
通常,您将使用cd
命令从一个目录移动到另一个目录。但是,如果您在命令行上花费大量时间,则pushd
和popd
命令将提高您的生产率和效率。
如果您有任何问题或反馈,请随时发表评论。