使用popd,pushd获取目录堆栈中不同目录路径的引用

时间:2018-10-22 20:22:29

标签: bash

我正在研究一个脚本,用于在工作中自动执行构建过程。我正在使用push和popd进行跟踪,并导航回目录堆栈。有没有一种方法可以获取目录堆栈中某个索引的引用路径?例如,我将在树上导航,并在移动时将目录推入堆栈。最终,我想找到一个文件,并将其移动到堆栈上的目录路径之一。我起初尝试做“ mv file.txt popd”,但是当然所有这一切都是更改file.txt的名称。

简而言之,如何获得对目录堆栈中路径的引用?

1 个答案:

答案 0 :(得分:2)

dirsdirs +N调用时,dirs -N命令可以在目录堆栈的指定索引处显示该条目。如果您想将其用作命令的参数,则需要命令替换,例如N

请注意,默认情况下,对于目录堆栈中主目录中的任何条目,mv file.txt "$(dirs +2)"会使用dirs代替主目录路径将其打印出来。但是,在解析命令时,bash会在代字号扩展后的 中执行命令替换,因此它不会将~命令打印的~替换为您的主目录路径。要解决此问题,您需要为dirs赋予-l选项,以防止它首先将主目录打印为dirs。 (感谢贾斯汀注意到这一点)

您可以通过运行~或在手册页中查找bash来获得dirs的全部详细信息,大约四分之三。