最近用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
}