強化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://gist.github.com/Mirochiu/042120005642560093327b23ca3b1378/

主要得感謝 otobrglez大大的script,我只是fork後再加了logcat部份。感動! adb install TABTAB可以列出檔案了,也感謝otobrglez大大已經先做了很多方便的功能。 

下載回來取代 /usr/share/bash-completion/completions/_adb 吧!

成品特點整理如下:

  1. adb -s <TAB>會直接帶入已連接的裝置或列出裝置選項,這樣要指定device連線就方便許多
  2. adb logcat <TAB> 會顯示-s選項
  3. adb install <TAB> 會列出當前目錄檔案
  4. adb uninstall <TAB>會顯示裝置上的app套件列表
  5. adb shell <TAB> 會列出裝置上的shell指令


留言