刚进入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
在其中添入两个函数即可,具体如下:

STATIC int handle_line(char *line);STATIC void setprealias(void);STATICinthandle_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;}STATICvoidsetprealias(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);}

函数很简单,就不详细注释了,看下效果:



更多相关文章

  1. 箭头函数的基础使用
  2. Python技巧匿名函数、回调函数和高阶函数
  3. 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(
  4. Android(安卓)Debug Bridge (adb)
  5. DCCI与UC联合发布2012中国Android用户数据报告
  6. Android的ADB工具使用
  7. Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!
  8. 刚进入Android终端即可使用busybox的命令
  9. [置顶] Android(安卓)Studio 配置优化

随机推荐

  1. Android(安卓)渗透测试学习手册(七)不太知
  2. Android基础笔记(五)-网络编程
  3. [笔记分享] [Android] Android系统概述
  4. cocos2d-x学习笔记06:如何将win32移植到an
  5. 23.《Android安全攻防权威指南》笔记
  6. android设置Activity背景色为透明的2种方
  7. android每日一问【2011-09-17】
  8. android 利用shape实现环形进度条
  9. Android下native code(C++)的编译,NDK的使用
  10. 新书内容连载(3):Android(安卓)SDK中常用命