通用功能——Mac自定义脚本并全局运行

摘要

移动项目开发工作中总是有一些固定的工作流程,比如:

  1. 本地分支正在工作中,需要拉去远程分支的代码;

  2. 本地分支正在工作中,需要将之前提交而未push的代码推送到远程分支;

  3. 想快速启动App;

这些都是很常用的操作,作为一个coder,这些固定的流程肯定有程序化的解决思路,如是就想着用shell脚本来完成这个自动化操作的过程。

这个功能之前自己在另一台Mac上实现过,但是换电脑后,自己想重新实现一下结果鼓捣了好久,好在最后还是搞出来了,这里姑且记录下,免得日后忘记了自己有得在网上找了。

shell脚本的编写

这里就贴一个自己写的很简单的脚本,文件名:common.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
safePush() {
echo "切换到项目工作目录:"
cd ~/StudioProjects/RandyWorks/KadaForAndroid
git stash
git pull --rebase
git stash pop
}

safePull() {
echo "切换到项目工作目录:"
cd ~/StudioProjects/RandyWorks/KadaForAndroid
git status
git stash
git pull --rebase
git stash pop
}

startApp() {
echo "请输入要启动的 App的包名:"
read package_name
echo "请输入要启动的 Activity路径"
read launch_activity_path
if [ -z "$launch_activity_path" ]
then
launch_activity_path=".main.ui.activity.LaunchActivity"
else
echo "启动的activity:$launch_activity_path"
fi
adb shell am start "$package_name/.main.ui.activity.LaunchActivity"
}

脚本的内容很简单,就不做详述了,接下来才是重点,怎没做到脚本文件的全局运行

全局运行脚本文件

这里肯定有很多的方案,我只说我自己的方案,我电脑上撞了oh-my-zsh,个人感觉挺好用的,有一天在修改 .zshrc文件时发现 这个文件里面有如下内容

1
2
3
4
#...
source $ZSH/oh-my-zsh.sh
source ~/.bash_profile
#...

我稍微查阅了一下,这个是在该文件中一用 oh-my-zsh.sh 这个文件的写法,如是我就把自定义的脚本的文件也写在这里了,这个.zshrc文件就变成了下面这样:

1
2
3
4
5
#...
source $ZSH/oh-my-zsh.sh
source "自定义脚本的路径"
source ~/.bash_profile
#...

加上后,重启一下终端,直接输入自定义脚本中定义的函数名就可以运行函数了,非常简单!

问题

这里可能会碰到几个问题

  1. 提示自定义shell脚本没有运行权限,直接更改权限即可:

    1
    chmod +x 自定义脚本路径
  2. 提示函数找不到,原因肯能是:

    1. 脚本没有保存;

    2. 改动脚本后没有让其生效(这个我试过了,如果是在.zshrc文件中按上面修改,只要保持就会生效的;

    3. 提示函数找不到,先检查一下拼写,确认无误后,在重启下终端即可。

好了,这篇文章就写完了,也算是一个小小的收获吧,多少能提高一下工作的效率!