2.3 KiB
2.3 KiB
MSH组件
msh 是 mr-library的命令行组件,msh是一个命令行解释器,提供用户交互的界面,用户通过在命令行中输入命令和参数,msh
负责解释和执行用户输入的命令。
支持的按键
| 按键 | 描述 |
|---|---|
| 退格键 | 删除当前光标前的字符 |
| 删除键 | 删除当前光标后的字符 |
| 左右方向键 | 向左向右移动光标 |
| Tab键 | 根据光标所在的位置自动补全命令 |
| 回车键 | 运行命令 |
命令格式
所有命令均以空格分隔,格式为:
命令 [参数1] [参数2] ... [参数n]
内置命令
msh内置了一些基础命令如help、clear等。
启动后使用help命令可以查看所有内置命令帮助。
msh> help
lsdev - List all devices.
logo - Show the logo.
clear - Clear the screen.
help - Show help information.
自定义命令
通过内置的宏将命令导出。
MR_MSH_CMD_EXPORT(name, fn, help);
| 参数 | 描述 |
|---|---|
| name | 命令名 |
| fn | 命令处理函数 |
| help | 命令帮助描述 |
命令处理函数:
int cmd_fn(int argc, void *argv)
{
}
| 参数 | 描述 |
|---|---|
| argc | 参数数量 |
| argv | 参数表 |
注:命令处理函数中最后需要输出\r\n换行,否则提示词将紧跟在当前行。
参数访问
char *p = MR_MSH_GET_ARG(index);
使用示例:
void hello_fn(int argc, void *argv)
{
for (size_t i = 1; i <= argc; i++)
{
mr_msh_printf("hello %s\r\n", MR_MSH_GET_ARG(i));
}
return MR_EOK;
}
MR_MSH_CMD_EXPORT(hello, hello_fn, "Hello every one");
运行hello命令:
msh> hello 1 2 3 4
hello 1
hello 2
hello 3
hello 4
msh>
如何使用
int main(void)
{
/* 自动初始化 */
mr_auto_init();
while(1)
{
/* msh处理 */
mr_msh_handle();
}
}