目录堆栈

    Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,命令可以返回前一次的目录。

    上面例子中,用户原来所在的目录是/path/to/foo,进入子目录bar以后,使用cd -可以回到原来的目录。

    如果希望记忆多重目录,可以使用pushd命令和popd命令。它们用来操作目录堆栈。

    pushd命令的用法类似cd命令,可以进入指定的目录。

      上面命令会进入目录dirname,并将该目录放入堆栈。

      第一次使用pushd命令时,会将当前目录先放入堆栈,然后将所要进入的目录也放入堆栈,位置在前一个记录的上方。以后每次使用命令,都会将所要进入的目录,放在堆栈的顶部。

      下面是一个例子。

      这两个命令的参数如下。

      (1)-n 参数

      -n的参数表示仅操作堆栈,不改变目录。

      1. $ popd -n

      上面的命令仅删除堆栈顶部的记录,不改变目录,执行完成后还停留在当前目录。

      (2)整数参数

      上面例子的整数编号都是从0开始计算,popd +0是删除第一个目录,popd +1是删除第二个,popd -0是删除最后一个目录,,popd -1是删除倒数第二个。

      (3)目录参数

      pushd可以接受一个目录作为参数,表示将该目录放到堆栈顶部,并进入该目录。

      1. $ pushd dir

      popd没有这个参数。

      命令可以显示目录堆栈的内容,一般用来查看pushdpopd操作后的结果。

      它有以下参数。

      • -c:清空目录栈。
      • -p:每行一个条目打印目录栈,默认是打印在一行。
      • -v:每行一个条目,每个条目之前显示位置编号(从0开始)。
      • +NN为整数,表示显示堆顶算起的第 N 个目录,从零开始。