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







