強化BASH下的ADB指令的自動完成功能
Improve the auto completion of BASH for adb commands
會想要強化adb的自動完成功能主要是我要adb安裝apk時Tab兩次竟然不會列出當前目錄下的apk檔案,這問題實在太夭壽啦! 然後就開始研究一下bash的auto completion
Ubuntu的自動完成
Ubuntu 20.04下BASH的自動完成工可以安裝套件就好,不過看起來預設就是裝好的了。
sudo apt install bash-completion
參考: https://www.cyberciti.biz/faq/add-bash-auto-completion-in-ubuntu-linux/
adb自動完成script在哪?
BASH會先讀取/etc/profile.d/bash_completion.sh,再讀取/usr/share/bash-completion/bash_completion ,偷看一下隔壁資料夾就找到了adb的自動完成script /usr/share/bash-completion/completions/_adb
找到標的物了,我如果改完要怎測試? 不會要我重新log out再login吧! 是傻子才做這種事情,當然就用exec! 直接用新的bash取代目前的程序
exec bash
然後就可以反覆測試adb指令開始快樂寫自動完成script了(誤)
自己動手寫?
全部都自己寫太累拉,總是要拷貝一下,參考了Jesse Chen大大好久以前留下的文章
糅和了這兩個script的adb
- https://github.com/mbrubeck/android-completion/blob/master/android
- https://gist.github.com/otobrglez/7677543
成品!
https://gist.github.com/Mirochiu/042120005642560093327b23ca3b1378/
主要得感謝 otobrglez大大的script,我只是fork後再加了logcat部份。感動! adb install TABTAB可以列出檔案了,也感謝otobrglez大大已經先做了很多方便的功能。
下載回來取代 /usr/share/bash-completion/completions/_adb 吧!
成品特點整理如下:
- adb -s <TAB>會直接帶入已連接的裝置或列出裝置選項,這樣要指定device連線就方便許多
- adb logcat <TAB> 會顯示-s選項
- adb install <TAB> 會列出當前目錄檔案
- adb uninstall <TAB>會顯示裝置上的app套件列表
- adb shell <TAB> 會列出裝置上的shell指令
留言