`
runfeel
  • 浏览: 936001 次
文章分类
社区版块
存档分类
最新评论

刚进入Android终端即可使用busybox的命令

 
阅读更多
刚进入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);

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);
}

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



分享到:
评论

相关推荐

    安卓上使用的busybox,adb push即可使用

    6. 重启设备,然后你可以在终端模拟器中使用 `busybox` 命令来调用各种工具。 ** Busybox 的高级功能与 Root 权限 ** 虽然基础的 Busybox 功能可以在非 Root 的 Android 设备上使用,但许多高级功能,如管理系统...

    Android 版本的busybox和 ifstat工具

    安装完成后,需通过终端模拟器(如Termux)或其它shell环境来运行Busybox命令。 安装步骤通常包括: 1. 下载 Busybox 的 APK 文件到手机。 2. 安装 APK 并授予必要的权限。 3. 运行安装脚本,使 Busybox 的二进制...

    超级终端命令大全-ANDROID

    通过以上内容,我们可以看到在Android系统中使用超级终端时,`free`命令可以有效地监控内存使用情况;BusyBox则提供了一个强大的工具集合,能够满足基本的命令需求;而`reboot`命令则是系统管理员重启设备的重要手段...

    在Android手机上执行Linux命令

    - **BusyBox安装**: BusyBox是一个集成了许多标准Linux命令和工具的小型程序,它为Android提供了类似Linux的环境,使其能够执行更多的Linux命令。因此,在执行Linux命令之前,确保已安装BusyBox。 - **终端模拟器...

    busybox.zip

    1. **增强命令集**:`busybox`包含了数百个常用的Linux命令,如`ls`, `cat`, `cp`, `mv`, `mount`, `umount`, `ifconfig`等,极大地扩展了Android终端的功能,使得开发者可以更方便地进行系统操作和故障排查。...

    Android系统在超级终端下必会的命令.docx

    通过以上的介绍可以看出,BusyBox为Android系统下的超级终端提供了丰富的命令集,极大地简化了系统管理和维护的工作。掌握这些命令不仅可以提高工作效率,还能帮助开发者更好地理解和应对Android系统中的各种问题。

    android VNC

    3)在手机的“终端”更改androidvncserver的权限,如下: 1.adb shell 2.#cd data/local/ 3.# chmod 777 androidvncserver 把权限改为只读和可执行。此步骤可以用Root Explorer直接操作。 4)运行androidvncserver...

    Termux和Hacker’s Keyboard的android安装包

    Termux是一款专为Android操作系统设计的强大终端模拟器应用,它为用户提供了类Unix环境,无需Root权限即可在手机或平板上使用Linux命令行工具。Termux不仅为开发者、黑客和极客提供了便捷的平台,也使得普通用户可以...

    夜神模拟器tcpdump抓包教程

    2. **查看网卡信息**:使用命令 `busybox ifconfig` 查看模拟器中的网络接口信息,找到目标网卡,本例中假设目标网卡为 `eth1`。 #### 七、开始抓包 1. **指定网卡和目标IP**:使用命令 `tcpdump -i eth1 host 188...

    AnLinux V6.55 稳定版

    Termux是一个Android终端模拟器和Linux开发环境应用,它为Android设备提供了bash shell、包管理器(apt)和其他常见的Linux工具。Termux并不是一个完整的Linux发行版,而是为用户提供了一个基础环境,可以安装各种...

    扩充android手机内存的简单方法 .doc

    需要注意的是,刷新ROM后,之前安装的软件仍然保留在SD卡上,只需执行相关命令即可恢复。 然而,将软件移动到SD卡后,一些桌面小部件可能无法正常显示,此时需要删除这些小部件并重新添加。此外,虽然软件本身在SD...

    安卓厨房安装与使用.docx

    3. **配置环境**:在Cygwin环境下,使用`cd`命令进入厨房工具所在的目录,例如`cd /home/kitchen`。 4. **运行厨房**:在终端输入`./menu`,即可启动安卓厨房。 ### 使用技巧: - 如果希望直接通过Cygwin快捷方式...

    扩充android手机内存的简单方法.pdf

    在刷新ROM之后,之前安装的软件依然保留在SD卡上,只需运行相应的命令,即可快速恢复它们,避免重复安装。这种方法在更新系统或恢复出厂设置后非常有用。 然而,将软件移至SD卡可能会导致一些桌面插件出现问题,...

    Deskify:Deskify是Andronix App的替代产品。 在Android的Termux应用中获取Linux发行版。 另外,您还将使用VNC Viewer获得桌面环境。 这是一个自动化。 来自AndronixApp的链接

    Termux是一个强大的Android终端模拟器和Linux环境应用,无需Root权限即可使用。通过Deskify,用户可以在他们的Android设备上体验完整的Linux桌面环境,而不仅仅是命令行界面。 首先,让我们深入了解Termux。Termux...

    小米4C一键开启telnet

    【小米4C一键开启telnet】教程 在智能手机领域,小米4C是一款备受用户喜爱的设备,它提供了丰富的自定义选项以满足不同用户的需求。...关闭telnet服务时,只需在终端中输入`service stop telnetd`即可。

    mtk6577 root1.zip

    与RunMe.bat类似,这个脚本可能包含了在终端中执行的命令,帮助用户在Android设备上获取Root权限。在非Windows设备上,用户需要有相应的终端模拟器或者连接到电脑通过ADB(Android Debug Bridge)来运行此脚本。 3....

    AZ210 root工具

    7. **busybox**:这是一个包含大量Linux命令的小型实用程序集合,对于没有完整Linux工具链的安卓设备来说尤其重要,因为在root后可能会需要这些命令来执行系统操作。 8. **AdbWinApi.dll、AdbWinUsbApi.dll、Adb...

    White-Devil-BD

    《白魔鬼BD》是一款在Android平台上运行的软件或游戏,其安装和使用涉及到终端模拟器Termux以及Smali编程语言。下面将详细讲解与这些内容相关的知识点。 首先,让我们了解Termux。Termux是一个Android应用,它为...

Global site tag (gtag.js) - Google Analytics