最近用Linux开发,经常需要切换不同的项目代码,厌倦了各种目录切换的操作,换成自定义函数的方式进行快速切换。

设计思路

  • 实现一个自定义函数,能接收项目名称,跳转到对应代码目录
  • 由于git项目名称可能很长,需要对部分项目创建别名,能够转换到对应的项目名称再跳转
  • 如果项目不存在,跳转到默认目录

准备编程

  • bash的自定义函数格式
to(){  
    project=$1 //获取第一个参数
}
//所以,最终命令的用法应该类似这种方式:to projectA 即可跳转到对应项目目录
  • 项目名称映射 bash语法中的map定义格式为:declare -A map=(["akey"="avalue"])
    注意中间不要有空格
  • 目录跳转 自定义的方法中执行目录切换并不会改变当前用户的真实目录,除非放到bash_rc等自动加载的空间中。

代码实现

#快速跳转
to(){  
    declare -A map=(["user"]="new-user" ["enterprise"]="my-enterprise" ["common"]="all-common" ["crm"]="new-crm")
    home="/home/dev/git/" //设定默认目录,如果项目不存在跳转到此
    path=$home
    project=$1
    projectPath=${map[$project]} //从输入项中获取对应map中是否存在别名需要转换
    echo $projectPath
    if [ $projectPath ]
    then
        path=${home}${projectPath} //有别名则用别名目录拼接并跳转
    else
        path=${home}${project} //没有别名,则直接用输入名称跳转
    fi

    if [ ! -d $path ]
    then
        echo "dir doesn't exist,to default now!"
        cd $home
    else
        cd $path
    fi
}