bash - 使用 popd、pushd 时获取我的目录堆栈中不同目录路径的引用
问题描述
我正在编写一个用于在我的工作中自动化构建过程的脚本。我正在使用 pushd 和 popd 来跟踪并导航回目录堆栈。有没有办法获得目录堆栈中某个索引的引用路径?例如,我将向上导航树,并在移动时将目录推送到堆栈。最终,我想找到一个文件,并将其移动到堆栈上的目录路径之一。我一开始尝试做“mv file.txt popd”,但当然这一切都是改变file.txt的名称。
简而言之,如何获得对目录堆栈上路径的引用?
解决方案
该dirs
命令可以在调用时显示目录堆栈中指定索引处的条目dirs +N
或dirs -N
,其中N
是数字。如果您想将其用作命令的参数,则需要命令替换,例如mv file.txt "$(dirs +2)"
.
请注意,默认情况下,对于位于主目录中的目录堆栈上的任何条目,使用代替主目录的路径将dirs
其打印出来。~
但是在解析命令时,bash 会在波浪号扩展后进行命令替换,因此它不会将命令~
打印的内容替换dirs
为您的主目录的路径。为了解决这个问题,您需要提供-l
选项dirs
以防止它像~
一开始那样打印主目录。(感谢贾斯汀注意到这一点)
您可以dirs
通过运行help dirs
或查看 bash 的手册页(大约四分之三)来获得有关可以执行的操作的全部详细信息。
推荐阅读
- ios - 如何将 H.264 压缩应用于 CMSampleBuffer
- javascript - 购物车页面价格计算问题,逗号不显示总价格 $ NaN
- machine-learning - 预测一段时间内的客户流失
- javascript - 如何从 Crocks javascript 库中的 Monad 中提取值
- javascript - 通过延迟函数javascript阻止执行
- cassandra - Cassandra CQL:基于用户定义类型中的字段的查询
- swift - 如何在没有 UI 的情况下编写简单的 Xcode Swift 程序
- java - REST (Jersey):在返回类型不是 Response 的方法中返回响应中的错误
- html - 带连接线的 Angular Flex 盒子
- java - Hibernate 空间中的 JTS 几何生成“错误:(几何,bytea)中的函数不存在”