Shell的pushed和popd命令


在Linux中,pushdpopd命令用于与目录栈(directory stack)交互,它们是bash shell的内置命令,用于在多个目录之间高效地导航。

pushd 命令

pushd命令用于将目录添加到目录栈的顶部,并且将当前工作目录切换到该目录。这对于需要临时切换到另一个目录进行工作,然后再返回到原始目录的情况非常有用。

基本用法

  • pushd [目录]:将指定的目录添加到目录栈顶部,并切换到该目录。如果没有指定目录,则交换栈顶的两个目录。

popd 命令

popd命令用于移除目录栈顶部的目录,并将当前工作目录切换到新的栈顶目录。

基本用法

  • popd:从目录栈中移除顶部目录,并切换到新的栈顶目录。

dirs 命令

pushdpopd一起使用的还有dirs命令,它用于显示当前目录栈的内容。

基本用法

  • dirs:显示当前目录栈的列表。

示例

  1. 假设你当前在/home/user目录,想要临时切换到/etc目录:

    1
    pushd /etc

    这会将/etc目录添加到目录栈顶部,并切换当前目录到/etc

  2. /etc目录完成工作后,你想要返回到之前的目录(/home/user):

    1
    popd

    这会将/etc目录从目录栈中移除,并将当前目录切换回/home/user

  3. 在任何时候,如果你想查看当前目录栈的内容,可以使用:

    1
    dirs

    这会列出目录栈中的所有目录。

通过这种方式,pushdpopd命令允许你在多个目录之间快速且方便地导航,而无需记住每个目录的路径。



pushd 和 popd 命令根据 ‘LIFO’(后进先出)原则工作。在该原则之下,只有两个操作是允许的:把一个目录压入栈,以及把一个目录弹出栈。

利用好这两个命令,可以来进行(比cd更)高效的目录导航

pushd 命令会增加一个目录到栈顶,而 popd 命令会从栈顶移除一个目录。

dirs -v 可以显示目录栈中的历史目录,如下:

可以通过pushd +数字方式,快速进入某个目录


popd 命令则相反,其作用是从栈顶或历史中移除一个目录。

为了列出目录栈中的所有目录,只需输入 popd

为了从目录栈中移除一个目录,可以使用 popd +数字popd -数字 命令