junp是什么东西 (一分钟快速了解junp的核心功能)

天美租号

想跟大家唠唠我捣鼓的一个小玩意儿,我管它叫“junp”。为啥叫这名?也没啥高深莫测的,就是觉得跟我平时工作里头那种“跳来跳去”的感觉特别搭。也可能是我前阵子刷小视频,看到一个叫Junp俊鹏的发型师,觉得这名字挺顺口的,就借用了一下灵感,哈哈。

起因:为啥要搞这么个东西?

是这样的,咱干活的时候,经常要在好几个文件夹里头来回切换,有时候那路径深敲半天 cd ../../ 能把人给绕晕了。特别是手头同时跟好几个项目的时候,那叫一个头大。每次开个新的终端窗口,或者想从一个项目的某个深层目录跳到另一个项目的深层目录,都得先cd到根目录,然后再一层层敲进去,或者狂按Tab键补全,效率实在是不咋地。

junp是什么东西 (一分钟快速了解junp的核心功能)

我就寻思着,这事儿肯定有更省事的法子。就是有点懒,能让电脑多干点活,自己就少敲几下键盘。

探索过程:我是怎么一步步琢磨的

我也没多想,就老老实实敲命令。后来实在受不了了,我就琢磨着,能不能整个简单点的法子。

第一阶段:别名大法好

最开始想到的就是用那个 shell 的 alias,就是别名嘛比如我有个项目在 /data/web/project_alpha/src/config,我就设置个 alias gocfg='cd /data/web/project_alpha/src/config'。这样倒是省事儿了点,直接敲 gocfg 就进去了。

但这玩意儿有个毛病:

junp是什么东西 (一分钟快速了解junp的核心功能)

  • 项目一多就麻烦:我要是同时搞七八个项目,那不得设一堆别名?回头我自己都记不住哪个别名对应哪个路径了。
  • 不够灵活:有时候我想去的不是固定的子目录,而是项目根目录,或者项目下的另一个文件夹,别名就显得有点死板。
  • 维护成本:项目路径一变,或者我换了台电脑,就得重新去改那个 .bashrc 或者 .zshrc 文件,也挺烦的。

第二阶段:小脚本的萌芽

junp是什么东西 (一分钟快速了解junp的核心功能)

于是我就又琢磨,能不能再智能点。我想到了写个小脚本,或者说是个函数,让它能根据我给的参数,自动帮我“跳”到对应的项目目录里去。

我主要用 bash 或者 zsh 嘛就在我的配置文件里头加了这么一段东西。大概的思路是这样的:

  1. 定义一个统一的项目存放目录:比如我所有的项目都放在 ~/my_projects/ 这个文件夹下面。
  2. 写一个函数,就叫 `junp` :这个函数接收一个参数,这个参数就是我要去的项目的名字。
  3. 函数内部做拼接:~/my_projects/ 和我传进去的项目名拼接起来,然后执行 cd 命令。
  4. junp是什么东西 (一分钟快速了解junp的核心功能)

比如说,我写了这么个玩意儿(大概是这个意思,具体代码可能有点出入,凭记忆写的):

function junp() {

  if [ -z "$1" ]; then

    echo "你要跳到哪个项目去?"

junp是什么东西 (一分钟快速了解junp的核心功能)

    return 1

  fi

  local target_dir="$HOME/my_projects/$1"

  if [ -d "$target_dir" ]; then

    cd "$target_dir"

    echo "已跃迁至:$target_dir"

junp是什么东西 (一分钟快速了解junp的核心功能)

  else

    echo "没找着 $target_dir 这个地方!"

    return 1

  fi

junp是什么东西 (一分钟快速了解junp的核心功能)

然后 source ~/.bashrc (或者 ~/.zshrc) 一下,让它生效。

最终实现与效果:用起来咋样?

用起来那是相当爽!

现在好了,我想去哪个项目,直接 junp 项目名,‘嗖’的一下就过去了。比方说我有个项目叫 `project_gamma`,我直接在终端敲:

junp project_gamma

它就自动帮我跳到 ~/my_projects/project_gamma 这个目录底下。再也不用吭哧吭哧敲一长串路径了。

junp是什么东西 (一分钟快速了解junp的核心功能)

后来我还稍微改进了一下,比如支持再加个参数,直接跳到项目的某个子目录,或者如果只敲 junp 不带参数,就列出我所有能跳的项目,方便我瞅瞅。这就得在那个函数里头再加点判断逻辑了,比如用个 find 命令啥的去找 ~/my_projects/ 下面的一级子目录作为项目列表。

具体咋弄的? 我大概是这么完善的:

  • 列出项目: 如果不带参数,就 `ls -d ~/my_projects//` 差不多这样,把项目都列出来。
  • 跳转到子目录: 如果给了第二个参数,比如 junp project_delta src,那就尝试 `cd ~/my_projects/project_delta/src`。

junp是什么东西 (一分钟快速了解junp的核心功能)

这些都是小打小闹的改进,核心还是那个根据项目名快速跳转的功能。

一点感想

别看这只是个小小的改动,但日积月累下来,真是省了不少时间和精力。有时候,这种不起眼的小优化,对提高咱们的日常工作效率,帮助还挺大的。就像那个Junp俊鹏师傅设计发型一样,可能就是一个小小的修剪,整个人的感觉就不一样了。

平时多琢磨琢磨自己工作流程里有哪些不顺手的地方,稍微动动手,整个小工具或者小脚本,就能让自己舒服不少。这可能就是咱们折腾的乐趣。

这就是我关于“junp”这个小实践的分享,没啥高科技,就是图个方便快捷,希望能给大家一点小启发。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,12人围观)

还没有评论,来说两句吧...