6.8 目录堆栈

评论 0 浏览 0 2023-01-26

目录栈是一个最近访问过的目录列表。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来显示目录堆栈的最终内容。

最后更新2023-02-20
0 个评论
上一篇: 6.7 数组
下一篇: 6.9 控制提示符