Linux中的推入和弹出命令

pushdpopd 是允许您使用目录堆栈并在Linux和其他类似Unix的操作系统中更改当前工作目录的命令。 虽然 pushdpopd 是非常强大和有用的命令,它们被低估并且很少使用。

在本教程中,我们将向您展示如何使用 pushdpopd 命令来浏览系统的目录树。

目录堆栈

目录堆栈是您先前导航到的目录的列表。 可以使用以下命令查看目录堆栈的内容 dirs 命令。 使用目录更改为目录时,目录将添加到堆栈中 pushd 命令并用 popd 命令。

当前工作目录始终位于目录堆栈的顶部。 当前工作目录是用户当前所在的目录(文件夹)。每次与命令行交互时,您都在一个目录中工作。

pwd 命令可让您找出当前所在的目录。

浏览文件系统时,请使用 Tab 自动完成目录名称的键。 在目录名称的末尾添加斜杠是可选的。

pushdpopddirs 是shell内置的,其行为在不同的shell中可能略有不同。 我们将介绍命令的Bash内置版本。

pushd 命令#

的语法 pushd 命令如下:

pushd [OPTIONS] [DIRECTORY]

例如,将当前目录保存到目录堆栈的顶部并更改为 /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

如果要更改为 /var/www 目录,并将其放到堆栈的顶部,您将使用以下之一。

从上到下(或从左到右)计数时,目录的索引为 2

pushd +2

从下到上计数时 /var/www 目录是 1

pushd -1.

当不带任何参数使用时, pushd 将切换顶部的两个目录,并使新的顶部成为当前目录。 这与使用 cd - 命令。

popd 命令#

popd 命令采用以下形式:

popd [OPTIONS]

不带参数使用时 popd 从堆栈中删除顶层目录,并导航到新的顶层目录。

假设我们有以下目录堆栈:

/opt /usr/local /var/www /etc/nginx ~

如果您运行 popd 命令将删除 /opt 从堆栈上更改为 /usr/local 目录:

/opt$ popd

输出将显示新的目录堆栈:

/usr/local /var/www /etc/nginx ~

-n 选项禁止默认目录更改,并从堆栈中删除第二项:

/opt$ popd -n
/usr/local /etc/nginx ~

与…一样 pushdpopd 也接受 +N-N 可用于删除 Nth 堆栈目录。

/opt$ popd +1
/usr/local ~

结论#

通常,您将使用 cd 命令从一个目录移动到另一个目录。 但是,如果您在命令行上花费大量时间, pushdpopd 命令将提高您的生产力和效率。

如果您有任何疑问或反馈,请随时发表评论。

bash终端

Sidebar