1
0
mirror of https://github.com/NevermindZZT/letter-shell.git synced 2025-01-21 10:02:54 +08:00
2020-10-18 16:00:55 +08:00
..
2020-10-18 16:00:55 +08:00
2020-10-18 16:00:55 +08:00
2020-10-18 16:00:55 +08:00

shell_enhance

version standard build license

简介

shell_enhanceletter shell 3.0上用于增强shell功能的组件shell_enhance分离了一些不常用的shell功能对于需要这些功能的用户只需要将对应的文件加入到编译系统中即可

组件

shell_enhance目前包含的组件如下:

组件 描述 依赖文件
shell_cmd_group 提供命令组功能 shell_cmd_group.c shell_cmd_group.h

shell_cmd_group

shell_cmd_group提供了一个命令组的功能,用户可以将多个相关的命令打包成一个命令组,然后通过形如cmdgroup subcmd [param]的方式进行命令调用

  • 定义命令数组

    命令数组用于将多个命令关联到一个数组,这个数组就是定义命令组需要的,你需要想正常命令一样,为每个子命令对应定义一个函数,然后将他们添加到一个数组中,可以使用宏SHELL_CMD_GROUP_ITEM进行定义

    int test(int a, char *b)
    {
        printf("hello world, %d, %s\r\n", a, b);
        return 0;
    }
    
    int test2(int argc, char *argv[])
    {
        printf("%d parameters\r\n", argc);
        for (short i = 0; i < argc; i++)
        {
            printf("%s\t", argv[i]);
        }
        printf("\r\n");
    }
    
    ShellCommand testGroup[] =
    {
        SHELL_CMD_GROUP_ITEM(SHELL_TYPE_CMD_FUNC, test, test, command group test1),
        SHELL_CMD_GROUP_ITEM(SHELL_TYPE_CMD_MAIN, test2, test2, command group test2),
        SHELL_CMD_GROUP_END()
    };
    

    其中SHELL_CMD_GROUP_END()需要写在每个命令数组的最后

  • 定义命令组

    使用宏SHELL_EXPORT_CMD_GROUP定义命令组

    SHELL_EXPORT_CMD_GROUP(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), gt, testGroup, command group test);
    
  • 调用

    在命令行,使用cmdgroup subcmd [param]的形式调用命令

    letter:/$ gt test 666 Letter
    hello world, 666, Letter
    Return: 0, 0x00000000
    
    letter:/$ gt test2 hello world
    3 parameters
    test2   hello   world
    Return: 0, 0x00000000
    
  • 命令帮助

    通过使用cmdgroup -h的方式查看完整的命令帮助信息

    letter:/$ gt -h
    command group help of gt
    test: command group test1
    test2: command group test2
    Return: 0, 0x00000000