对于在字符界面下的 Gradle 用户而言,在不同的目录下穿梭是家常便饭。通常进到一个很深的目录并不困难(因为有Bash的自动完成),但想要返回到项目顶层就比较麻烦,以来需要打很多../,二来通常很难搞清楚自己究竟在第几层目录底下。
一个简单的解决方案是 pushd / popd,但是通常我们都是到了需要 pop 的时候才想起来没有事先 push,对吗?
那么,如何在最后关头念一声“回到顶层”就真的如愿呢?让我们在 .bashrc 中添加一个自定义函数 cdtop:
1: cdtop() {
2: prj_dir=
3: cur_dir=`pwd`
4: while [ -z $prj_dir ]
5: do
6: if [ -s build.gradle ]
7: then
8: prj_dir=`pwd`
9: else
10: cd ..
11: fi
12:
13: if [ `pwd` = / ]
14: then
15: echo "/"$cur_dir/" does not appear to be part of a Gradle project"
16: cd $cur_dir
17: break
18: fi
19: done
20: }
保存后,加载 .bashrc (或重新登录),就可以通过 cdtop 命令在 Gradle 项目下任何子文件夹跳转到顶层了。
PS. 判断是否到达顶层的原理是看有没有 build.gradle 文件,可以换成其它文件名来支持其它场合的跳转(或者干脆实现成列表)。
PS II. 本来想放在 xmeta 的脚本里的,但执行脚本的话会产生新的进程所以不能改变当前目录。
PS III. 最近把 Scala 也加到 xmeta 里了,但是一想到很快要把 go 和 c 也放进去我就感到不对劲,是时候重构了吧。
Technorati 标签:
Script
******
日本震的厉害,虽然不喜欢日本人,但是还是祝他们平安。
在使用 Gradle 的项目中,频繁穿梭于目录层级是常见操作。本文介绍了一个自定义 Bash 函数 `cdtop`,用于从任何子目录快速返回到项目顶层,判断依据是顶层是否存在 `build.gradle` 文件。这个功能可以有效简化在项目中的导航,并避免了使用 pushd / popd 的不便。此外,文章还提及了将类似功能扩展到 Scala、Go 和 C 项目的重构需求。

1万+

被折叠的 条评论
为什么被折叠?



