想跟大家唠唠我捣鼓的一个小玩意儿,我管它叫“junp”。为啥叫这名?也没啥高深莫测的,就是觉得跟我平时工作里头那种“跳来跳去”的感觉特别搭。也可能是我前阵子刷小视频,看到一个叫Junp俊鹏的发型师,觉得这名字挺顺口的,就借用了一下灵感,哈哈。
起因:为啥要搞这么个东西?
是这样的,咱干活的时候,经常要在好几个文件夹里头来回切换,有时候那路径深敲半天 cd ../../
能把人给绕晕了。特别是手头同时跟好几个项目的时候,那叫一个头大。每次开个新的终端窗口,或者想从一个项目的某个深层目录跳到另一个项目的深层目录,都得先cd
到根目录,然后再一层层敲进去,或者狂按Tab键补全,效率实在是不咋地。
我就寻思着,这事儿肯定有更省事的法子。就是有点懒,能让电脑多干点活,自己就少敲几下键盘。
探索过程:我是怎么一步步琢磨的
我也没多想,就老老实实敲命令。后来实在受不了了,我就琢磨着,能不能整个简单点的法子。
第一阶段:别名大法好
最开始想到的就是用那个 shell 的 alias,就是别名嘛比如我有个项目在 /data/web/project_alpha/src/config
,我就设置个 alias gocfg='cd /data/web/project_alpha/src/config'
。这样倒是省事儿了点,直接敲 gocfg
就进去了。
但这玩意儿有个毛病:
- 项目一多就麻烦:我要是同时搞七八个项目,那不得设一堆别名?回头我自己都记不住哪个别名对应哪个路径了。
- 不够灵活:有时候我想去的不是固定的子目录,而是项目根目录,或者项目下的另一个文件夹,别名就显得有点死板。
- 维护成本:项目路径一变,或者我换了台电脑,就得重新去改那个
.bashrc
或者.zshrc
文件,也挺烦的。
第二阶段:小脚本的萌芽
于是我就又琢磨,能不能再智能点。我想到了写个小脚本,或者说是个函数,让它能根据我给的参数,自动帮我“跳”到对应的项目目录里去。
我主要用 bash 或者 zsh 嘛就在我的配置文件里头加了这么一段东西。大概的思路是这样的:
- 定义一个统一的项目存放目录:比如我所有的项目都放在
~/my_projects/
这个文件夹下面。 - 写一个函数,就叫 `junp` :这个函数接收一个参数,这个参数就是我要去的项目的名字。
- 函数内部做拼接:把
~/my_projects/
和我传进去的项目名拼接起来,然后执行cd
命令。
比如说,我写了这么个玩意儿(大概是这个意思,具体代码可能有点出入,凭记忆写的):
function junp() {
if [ -z "$1" ]; then
echo "你要跳到哪个项目去?"
return 1
fi
local target_dir="$HOME/my_projects/$1"
if [ -d "$target_dir" ]; then
cd "$target_dir"
echo "已跃迁至:$target_dir"
else
echo "没找着 $target_dir 这个地方!"
return 1
fi
然后 source ~/.bashrc
(或者 ~/.zshrc
) 一下,让它生效。
最终实现与效果:用起来咋样?
用起来那是相当爽!
现在好了,我想去哪个项目,直接 junp 项目名
,‘嗖’的一下就过去了。比方说我有个项目叫 `project_gamma`,我直接在终端敲:
junp project_gamma
它就自动帮我跳到 ~/my_projects/project_gamma
这个目录底下。再也不用吭哧吭哧敲一长串路径了。
后来我还稍微改进了一下,比如支持再加个参数,直接跳到项目的某个子目录,或者如果只敲 junp
不带参数,就列出我所有能跳的项目,方便我瞅瞅。这就得在那个函数里头再加点判断逻辑了,比如用个 find
命令啥的去找 ~/my_projects/
下面的一级子目录作为项目列表。
具体咋弄的? 我大概是这么完善的:
- 列出项目: 如果不带参数,就 `ls -d ~/my_projects//` 差不多这样,把项目都列出来。
- 跳转到子目录: 如果给了第二个参数,比如
junp project_delta src
,那就尝试 `cd ~/my_projects/project_delta/src`。
这些都是小打小闹的改进,核心还是那个根据项目名快速跳转的功能。
一点感想
别看这只是个小小的改动,但日积月累下来,真是省了不少时间和精力。有时候,这种不起眼的小优化,对提高咱们的日常工作效率,帮助还挺大的。就像那个Junp俊鹏师傅设计发型一样,可能就是一个小小的修剪,整个人的感觉就不一样了。
平时多琢磨琢磨自己工作流程里有哪些不顺手的地方,稍微动动手,整个小工具或者小脚本,就能让自己舒服不少。这可能就是咱们折腾的乐趣。
这就是我关于“junp”这个小实践的分享,没啥高科技,就是图个方便快捷,希望能给大家一点小启发。
还没有评论,来说两句吧...