用super adb提升开发效率

在日常开发过程中,adb shell的使用是非常频繁的;但是Android内置的shell功能简直太弱了,且不说 grep 、awk、find等命令,甚至连 cp 这种命令都不支持;我每次copy文件都只有这样:

cat file1 > file2

如果想编辑手机里的某个文件,我真是想撞墙。。首先得adb pull下来,本地修改之后 ,然后adb push上去。。这种效率真是不能忍,多么希望有一个 vi 来拯救我啊!!

有童鞋说可以用busybox,这玩意儿在root手机上无可挑剔,完美满足我的需求;但是并不是所有的手机都可以root的,这就有点捉襟见肘了。Google Play商店上有一个 BusyBox Install (No Root) 的应用,看似是解决了非root手机上的busybox使用的问题;但是它用起来极其不方便,这个shell还是手机上的terminal shell?!你特么在逗我?

这怎么能忍?!自然是挽起袖子自己撸一个!!

为什么非root的手机对busybox支持不好呢?因为它的那些命令需要写入 /system/bin 这样的目录,而我们是没有权限写的。但是。。我们仅仅是需要执行一个命令而已,为什么需要把它放到系统的目录里面去呢?我们把busybox放在别的目录,然后导出环境变量,把它添加到path里面去不就行了么?

这样安装的问题就解决了,但是使用起来还是非常不方便。。由于我们的命令不在系统路径里面,而adb shell启动的又不是login shell,不会读取配置文件,我们只能在shell启动之后,先输入:

export PATH='/data/local/tmp/:$PATH'

才能享用busybox的强大功能;虽然已经好了很多,差强人意;但是作为一个完美主义者的我,怎么能接受每次adb shell之后又敲这么一段破玩意儿!!

因此接下来的问题是,能不能在启动shell之后自动输入一句话,然后再与我们进行交互?这不就是 expect(1) - Linux man pageexpect(1) - Linux man page 的功能么?!无奈,expect在Windows下要单独安装,这下就不太好了哟。。于是我上PYPI一搜,果然有个pexpect,是一个python实现,于是接下来的事情就好办了嘛。。一不做二不休,分分钟撸完;代码在这里:

GitHub - tiann/super-adb: Enhance the adb shell using busybox, No need root.

有了super-adb,你能干啥?在Android ADB shell上面,你可以用vi编译文件,享受grep、find、awk以及sed等等一系列方便好用的命令,甚至wget都有!!是不是迫不及待想要试试?哈哈 ^_& 最后给一张图你们感受下:

渣乎竟然不支持gif。。。无力吐槽,去github上看吧:

GitHub - tiann/super-adb: Enhance the adb shell using busybox, No need root.

编辑于 2016-10-20 00:02