6.8 目录堆栈
目录栈是一个最近访问过的目录列表。pushd
内置程序在改变当前目录时将目录添加到堆栈中,popd
内置程序从堆栈中删除指定的目录,并将当前目录改为被删除的目录。dirs
内置函数显示目录栈的内容。当前目录始终是目录栈的顶部。
目录堆栈的内容也可以作为DIRSTACK
shell变量的值看到。
1 目录堆栈内置。
dirs
dirs [-clpv] [+N | -N]
显示当前记忆中的目录列表。用
pushd
命令将目录添加到列表中;用popd
命令将目录从列表中删除。 当前目录总是堆栈中的第一个目录。-c
通过删除所有的元素来清除目录堆栈。
-l
使用完整路径名生成列表; 默认列表格式使用波浪号来表示主目录。
-p
使
dirs
打印目录堆栈,每行一个条目。-v
使
dirs
打印目录堆栈,每行一个条目,每个条目在堆栈中以其索引为前缀。+N
显示第N个目录(从
dirs
打印的列表左边算起,当不使用选项调用时),从0开始。-N
显示第N个目录(从
dirs
在没有选项的情况下调用时打印的列表的右边开始计算),从0开始计算。
popd
¶popd [-n] [+N | -N]
从目录栈中删除元素,元素的编号从0开始,由
dirs
列出的第一个目录开始;也就是说,popd
相当于popd +0
。当没有给定参数时,
popd
从堆栈中删除顶层目录,并改变为新的顶层目录。参数,如果提供的话,有以下含义:
-n
从堆栈中删除目录时抑制目录的正常更改,以便仅操作堆栈。
+N
删除堆栈中的N个目录(从
dirs
打印的列表的左边开始算起),从0开始。-N
删除堆栈中的N个目录(从
dirs
打印的列表的右边开始算起),从0开始。
如果目录堆栈的顶部元素被修改,并且没有提供-n选项,
popd
使用cd
内置程序来改变到堆栈顶部的目录。 如果cd
失败,popd
返回一个非零的值。否则,如果遇到一个无效的选项,目录栈是空的,或者指定了一个不存在的目录栈条目,
popd
就会返回一个不成功的状态。如果
popd
命令成功,Bash就会运行dirs
来显示目录栈的最终内容,返回状态为0。pushd
pushd [-n] [+N | -N | dir]
将一个目录添加到目录堆栈的顶部,或者旋转堆栈,使新的堆栈顶部成为当前工作目录。 在没有参数的情况下,
pushd
交换目录堆栈的前两个元素。参数,如果提供的话,有以下含义:
-n
在旋转或向堆栈添加目录时抑制目录的正常更改,以便仅操作堆栈。
+N
通过旋转堆栈将N个目录(从
dirs
打印的列表左边开始算起,从0开始)带到列表的顶部。-N
通过旋转堆栈将N个目录(从
dirs
打印的列表的右边开始计算,从0开始)带到列表的顶部。dir
使dir成为堆栈的顶端。
在堆栈被修改后,如果没有提供-n选项,
pushd
使用cd
内置程序来改变到堆栈顶部的目录。 如果cd
失败,pushd
返回一个非零值。否则,如果没有提供参数,
pushd
返回0,除非目录栈是空的。 当旋转目录栈时,pushd
返回0,除非目录栈是空的,或者指定了一个不存在的目录栈元素。如果
pushd
命令成功,Bash就会运行dirs
来显示目录堆栈的最终内容。