刚进入Android终端即可使用busybox的命令
2011-11-19 21:36
417 查看
刚进入Android终端即可使用busybox的命令
作者:dengxiayehu
欢迎交流,转载请注出处。
Android中的内置sh可是出了名的难用,只支持少得可怜的常用命令,所以大家一般都喜欢推一个busybox进去
以方便使用。具体方法请参见:在Android模拟器中安装busybox这篇文章。
但是这里又出现一个问题就是,就是我们每次adb shell进入Android的终端后,还得要手动先执行一下那个脚本,
那还不得麻烦死,所以还得改进。我想,应该可以从sh的源码入手,在其进入命令循环之前先在代码中设置我们所需的
alias命令即可,具体如下:
所需改动的文件:
1、system/core/sh/main.c
找到void cmdloop(int top)这个函数的定义,在for(;;)死循环之前加上
setprealias();
这句调用自定义的设置alias函数,具体的函数体下述。
2、system/core/sh/alias.c
在其中添入两个函数即可,具体如下:
函数很简单,就不详细注释了,看下效果:
作者:dengxiayehu
欢迎交流,转载请注出处。
Android中的内置sh可是出了名的难用,只支持少得可怜的常用命令,所以大家一般都喜欢推一个busybox进去
以方便使用。具体方法请参见:在Android模拟器中安装busybox这篇文章。
但是这里又出现一个问题就是,就是我们每次adb shell进入Android的终端后,还得要手动先执行一下那个脚本,
那还不得麻烦死,所以还得改进。我想,应该可以从sh的源码入手,在其进入命令循环之前先在代码中设置我们所需的
alias命令即可,具体如下:
所需改动的文件:
1、system/core/sh/main.c
找到void cmdloop(int top)这个函数的定义,在for(;;)死循环之前加上
setprealias();
这句调用自定义的设置alias函数,具体的函数体下述。
2、system/core/sh/alias.c
在其中添入两个函数即可,具体如下:
STATIC int handle_line(char *line); STATIC void setprealias(void); STATIC int handle_line(char *line) { char *p, *q; char target[30]; if (!line) { return 0; } p = line; for ( ; ; ) { while (isspace(*p)) { ++p; } if (!(*p)) { return 0; } q = p; while (isalpha(*p) || isdigit(*p) \ || '[' == *p \ || ']' == *p \ || '.' == *p \ || '-' == *p \ || '_' == *p) { p++; } *p++ = '\0'; // > ignore alias itself if (!strcmp(q, "alias")) { continue; } snprintf(target, sizeof(target), "busybox %s", q); setalias(q, target); } return 0; } STATIC void setprealias(void) { FILE *fp; char buff[128]; int flag = 0; fp = popen("busybox --help", "r"); if (!fp) { outfmt(out2, "run \"busybox --help\" failed"); return; } while (fgets(buff, sizeof(buff), fp)) { if (flag) { handle_line(buff); } if (!strcmp("Currently defined functions:\n", buff)) { flag = 1; } } pclose(fp); }
函数很简单,就不详细注释了,看下效果:
相关文章推荐
- 使用apktool.jar工具反编译和回编译Android APK 终端命令模式
- android 终端运行 vim / vi 命令执行失败 busybox解决之
- android手机使用完整的linux命令——busybox的安装和使用
- android缺少grep、cp、awk等命令? 下载安装busybox即可!
- Android终端命令:使用mount命令以读写方式重新挂载/system分区
- 命令行进入android系统里执行linux命令的方法——busybox
- Android教程之Android SDK1.5模拟器使用命令
- Android系统在超级终端下必会的命令大全(二)
- Android系统在超级终端下必会的命令大全(adb shell命令大全)
- Android开发,常用的终端命令
- Android系统的超级终端命令大全(四)--系统管理命令
- Android 使用adb shell命令时出现sqlite3 : not found 问题 解决方法
- Android使用命令生成签名密钥文件及使用命令二次签名
- Mac OS 中通过终端使用 code 命令打开 VS Code
- Android系统在超级终端下必会的命令大全(adb shell命令大全)
- Android测试命令工具Monkey使用
- Mac重装系统,使用终端命令制作U盘启动
- Android 用命令进入flash模式
- 使用python编写android截屏脚本双击运行即可
- Android系统在超级终端下必会的命令大全(adb shell命令大全)