我正在研究一个脚本,用于在工作中自动执行构建过程。我正在使用push和popd进行跟踪,并导航回目录堆栈。有没有一种方法可以获取目录堆栈中某个索引的引用路径?例如,我将在树上导航,并在移动时将目录推入堆栈。最终,我想找到一个文件,并将其移动到堆栈上的目录路径之一。我起初尝试做“ mv file.txt popd”,但是当然所有这一切都是更改file.txt的名称。
简而言之,如何获得对目录堆栈中路径的引用?
答案 0 :(得分:2)
以dirs
或dirs +N
调用时,dirs -N
命令可以在目录堆栈的指定索引处显示该条目。如果您想将其用作命令的参数,则需要命令替换,例如N
。
请注意,默认情况下,对于目录堆栈中主目录中的任何条目,mv file.txt "$(dirs +2)"
会使用dirs
代替主目录路径将其打印出来。但是,在解析命令时,bash会在代字号扩展后的 中执行命令替换,因此它不会将~
命令打印的~
替换为您的主目录路径。要解决此问题,您需要为dirs
赋予-l
选项,以防止它首先将主目录打印为dirs
。 (感谢贾斯汀注意到这一点)
您可以通过运行~
或在手册页中查找bash来获得dirs
的全部详细信息,大约四分之三。