global scripts 工程简介¶
工程地址:global_scripts
global scripts工程是我在工作、生活中把常用到的命令、脚本等都集合到这个工程中。主要用的能力如:
-
zsh 主题、插件
-
tmux 主题、插件
-
vim 主题、配置
-
aosp 编译脚本(超级好用,编译后还自动通知)
-
adb push 快捷命令(配合服务器上的编译特别好用)
-
adb 命令
-
aosp grep 命令(无需lunch)
-
frida(android 相关)
-
clash(linux 下使用 vpn)
-
winscope(android sf、wms相关,懂的都懂)
-
code style
-
git 快捷键
-
im bot(企业微信、钉钉、飞书)
-
常用命令 alias
-
...
如何使用¶
在 ~/.bashrc 里 source gs_env.sh 文件即可,比如我的工程目录在/Users/solo/code/github/global_scripts
source gs_env.sh 要改成其所在的路径
配合zsh、oyz使用¶
如果不想用zsh,就如上只在 ~/.bashrc 中 source gs_env.sh 即可,但建议配合zsh使用更佳。
安装zsh¶
安装oyz¶
配置¶
在 ~/.zshrc 里source gs_env.sh文件即可,比如我的工程目录在/Users/solo/code/github/global_scripts
source gs_env.sh 要改成其所在的路径
.zshrc里还配置zsh-autosuggestions 、zsh-syntax-highlighting插件,所以需要下载以下两个工程
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
插件[重要]¶
在加载 gs_env.sh 时,除了加载一些基本的配置以外;大部分的配置都改成插件的方案。
可以在 home 目录下配置 .gsrc 文件,或者直接在本工程的 conf/.gsrc 文件下修改需要用到的插件。
目前支持的插件如下:
## 插件
gs_plugins=(
alias/common
alias/private
android/adb
android/build
android/frida
android/grep
android/perfetto
android/push
android/winscope
common
git
system/brew
system/clash
system/proxy
system/repo
)
此外,还可以通过 gs_themes_prompt 配置 prompt 主题,或者通过 gs_custom_plugins 配置 custom 目录下的插件(用户自己扩展的插件目录)。
甚至还可以 gs_env_debug 来打开或者关闭调试信息。
## 调试
gs_env_debug=0
## prompt 主题
gs_themes_prompt=remote
## custom 目录下的插件
gs_custom_plugins=(
work
...
)
脚本能力¶
gs_android_build.sh¶
android源码编译快捷键命令,如全编、ninja单编等。
╭─[solo@10.0.12.7] ➤ [/Users/solo/code/8450] ➤ [2023-09-10 14:16:22]
╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ gs_android_build6
gs_android_build gs_android_build_ninja gs_android_build_vendor
gs_android_build_car gs_android_build_ninja_clean
gs_android_build_make gs_android_build_qssi
暂时用到这些命令,后续有常用的再补充
╭─[solo@10.0.12.7] ➤ [/Users/solo/code/8450] ➤ [2023-09-10 14:16:42]
╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ gs_android_build_ninja
Trying dependencies-only mode on a non-existing device tree?
1. framework
2. framework-minus-apex
3. services
4. libandroid_servers
5. libinputflinger
6. libinputdispatcher
7. libinputreader
8. selinux_policy
9. surfaceflinger
10. update_engine
11. android.hardware.power-service
12. libresourcemanagerservice
13. libaudioflinger
14. libcameraservice
15. com.journeyOS.J007engine.hidl@1.0-service
16. com.journeyOS.J007engine.hidl@1.0
17. J007Service
18. jos-framework
19. jos-services
20. watermark
Which would you like? [ framework ]
gs_android_grep.sh¶
android源码目录下grep快速查找代码
╭─[solo@10.0.12.7:/Users/solo/code/github/global_scripts] ➤ [2023-09-10 14:18:29]
╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ gs_aosp_help
- gs_aosp_cgrep: Greps on all local C/C++ files.
- gs_aosp_ggrep: Greps on all local Gradle files.
- gs_aosp_gogrep: Greps on all local Go files.
- gs_aosp_jgrep: Greps on all local Java files.
- gs_aosp_ktgrep: Greps on all local Kotlin files.
- gs_aosp_resgrep: Greps on all local res/*.xml files.
- gs_aosp_mangrep: Greps on all local AndroidManifest.xml files.
- gs_aosp_mgrep: Greps on all local Makefiles and *.bp files.
- gs_aosp_owngrep: Greps on all local OWNERS files.
- gs_aosp_rsgrep: Greps on all local Rust files.
- gs_aosp_sepgrep: Greps on all local sepolicy files.
- gs_aosp_sgrep: Greps on all local source files.
gs_adb.sh¶
adb快捷键命令
暂时用到这些命令,后续有常用的再补充
╭─[solo@10.0.12.7:/Users/solo/code/github/global_scripts] ➤ [2023-09-10 14:18:29] ╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ gs_android_adb_ gs_android_adb_abx2xml gs_android_adb_j007engine_kill gs_android_adb_rm_dex2oat gs_android_adb_clear_package gs_android_adb_j007engine_log gs_android_adb_screencap gs_android_adb_connect gs_android_adb_j007service_clear gs_android_adb_screenrecord gs_android_adb_dump_version gs_android_adb_j007service_kill gs_android_adb_selinux_disable gs_android_adb_dump_version_settings gs_android_adb_j007service_log gs_android_adb_settings_provider gs_android_adb_hidden_api_disable gs_android_adb_j007service_version gs_android_adb_sf_dump_refresh_rate gs_android_adb_hidden_api_enable gs_android_adb_key gs_android_adb_sf_set_refresh_rate gs_android_adb_i007service_clear gs_android_adb_key_back gs_android_adb_sf_show_refresh_rate gs_android_adb_i007service_kill gs_android_adb_key_home gs_android_adb_show_3rd_app gs_android_adb_i007service_log gs_android_adb_key_menu gs_android_adb_show_log gs_android_adb_i007service_version gs_android_adb_kill_grep gs_android_adb_show_system_app gs_android_adb_imei gs_android_adb_kill_package gs_android_adb_shutdown_emulator gs_android_adb_input_disable gs_android_adb_log_grep gs_android_adb_systrace gs_android_adb_input_enable gs_android_adb_ps_grep
gs_android_push.sh¶
╭─[solo@10.0.12.7:/Users/solo/code/github/global_scripts] ➤ [2023-09-10 14:19:45]
╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ gs_android_push_
gs_android_push_args gs_android_push_framework_jni gs_android_push_so
gs_android_push_ext_framework gs_android_push_input gs_android_push_surfaceflinger
gs_android_push_ext_services gs_android_push_mediaserver gs_android_push_systemui
gs_android_push_flyme_services gs_android_push_services
gs_android_push_framework gs_android_push_settings
zsh自定义主题¶
- 用户名
- ip地址
- 当前目录绝对路径
- 当前时间
- git信息(分支、是否修改等)
- bash环境 还是 zsh环境;py环境
╭─[solo@10.0.12.7:/home/solo/code/github/global_scripts] ➬ [2023-09-10 14:19:41]
╰─(zsh-py39tf2.x) ❯❯❯❯❯❯ git:(main)
zsh环境并且当前目录是git仓才显示git信息。 主题是有颜色的,只是这里贴上文本看不出。
gerrit提交脚本¶
如果是提交代码到gerrit,在终端执行gerrit.py -b branch。不输入分支信息则默认master分支。
frida¶
最初的时候我是"不屑于"用 frida 的,觉得系统开发人员随时可以通过该代码验证,何必用 frida 呢。
一次偶然的机会,使用 frida hook 了某个函数,就喜欢用上了,而且一发不可收。
如果你需要编译代码,编译慢不说,不同的产品的bug需要编译的jar、apex都不一样;那你服务器是不是得准备很多套 android 源码。这就要求你服务器容量要大。 所以 frida 的优势就来了,无需编译代码,hook 就行了。
对于辅助 debug 非常有用。
frida 具体的用法以及能力请自行查看代码。
clash¶
linux 系统下使用命令启用 clash。
codestyle¶
codestyle检查,支持Java代码或者kotlin代码。 执行 gs_check_style.py --style "strict_mode" 其中 strict_mode 可以为
可以根据自己的需求修改codestyle
tmux 主题、插件¶
自行查看代码。
git 快捷命令¶
a = add
b = branch
c = commit
d = diff
f = fetch
g = grep
l = log
m = merge
o = checkout
p = pull
r = remote
s = status
w = whatchanged
ap = add --patch
be = branch --edit-description
ci = commit --interactive
ds = diff --staged
lg = log --graph
ss = status --short
vim¶
轻量级 Vim 配置框架,全中文注释。
基础配置¶
- init.vim: 配置入口,设置 runtimepath 检测脚本路径,加载其他脚本。
- tiny文件夹: 所有人都能同意的基础配置(无任何按键和样式定义)。
- fileconfig.vim: 文件相关的配置。
- keymaps.vim: 快捷键定义。
- style.vim: 状态栏,更紧凑的标签栏文字等和显示相关。
- tabsize.vim: 制表符宽度,是否展开空格等,因为个人差异太大,单独一个文件好更改。
- terminal.vim: 终端相关配置。
- theme.vim: 色彩主题,高亮优化(mac系统下打开此功能)。
- tmux.vim: tmux相关配置。
色彩配置¶
颜色配置:在colors目录(都是网上下载的配置),下载后在theme.vim更新颜色主题即可。
other¶
- gs_common_alias.sh : 常用的alias
- gs_private_alias.sh : 私人的一些alias
后续¶
因为这个工程是我用来辅助工作,所以后续的一些更新方向也是围绕着我的工作内容来更新。目的就是为了提供工作效率,减少重复劳动力(主要是减少终端输入各种命令)。
因为工程引入了插件的方案,所以可玩性就很高。其实我自己也通过插件的方案加了了一个 gs_work 的插件工程,但因为有些内容涉及到工作的隐私,所以没公开。