命令行解释器 (xwsh)

XWOS的命令行解释器模块,提供交互式 Shell 和命令解析功能。

概述

XWSH(XWOS Shell)是 XWOS 的命令行解释器模块,为用户提供交互式的命令行界面。它位于源代码的 xwmd/cli/xwsh/ 目录,属于 XWOS 中间件层(xwmd)的命令行接口(cli)子模块。

XWSH 的核心功能包括:

  • 命令解析:将用户输入的字符串分割为命令名和参数
  • 命令执行:查找并调用对应的命令处理函数
  • 行编辑:基于 CherryRL 库提供历史记录、自动补全等功能
  • 扩展机制:支持用户添加自定义命令

模块架构

XWSH 采用分层设计,各组件之间的关系如下:

用户输入
    ↓
[m] Readline 层(CherryRL 集成)
    ↓
[c] 核心层(命令解析与执行)
    ↓
    ├── [c] 内置命令表
    ├── [c] 外部命令表(用户扩展)
    └── [c] 命令查找与分发
        ↓
        [c] 命令处理函数
  • 接口层(m):提供模块集成 API(mi.h
  • 核心层(c):命令解析、执行、管理(core.h/core.c
  • 读行层:行编辑功能(readline.h/readline.c
  • 命令层:内置命令实现(cmd.c

功能特性

1. 两种运行模式

  • 独立线程模式:创建专用线程运行 Shell
  • 嵌入式模式:在现有线程中集成 Shell 循环

2. 命令系统

  • 内置命令helpclearrd(读内存)、wr(写内存)
  • 外部命令:支持用户动态添加自定义命令
  • 重名检测:防止命令名称冲突

3. 行编辑功能

  • 历史记录:支持命令历史浏览和检索
  • 自动补全:预留补全接口
  • ANSI 转义:彩色提示符支持

4. 资源占用

  • 静态内存:无动态内存分配,适合嵌入式环境
  • 缓冲区固定:输入缓冲区 128 字节,参数最多 16 个

目录导航

  • 核心功能:命令解析算法、线程模型、错误处理
  • 命令系统:内置命令详解、外部命令添加方法
  • 扩展机制:CherryRL 库集成细节、回调函数说明
  • 集成指南:两种运行模式的代码示例和最佳实践
  • API 参考:所有公共和内部 API 的详细说明

快速开始

独立线程模式

#include "xwmd/cli/xwsh/mi.h"

xwstk_t xwsh_stack[1024];
xwer_t rc = xwsh_start(xwsh_stack, sizeof(xwsh_stack));

嵌入式模式

#include "xwmd/cli/xwsh/mi.h"

xwsh_init();
while (1) {
    char buf[XWSH_MAXINPUT];
    xwsh_loop(buf);
}

源码位置

模块组件 源码文件 描述
公共接口 xwmd/cli/xwsh/mi.h
xwmd/cli/xwsh/mi.c
模块集成 API
核心功能 xwmd/cli/xwsh/core.h
xwmd/cli/xwsh/core.c
命令解析与执行
行编辑 xwmd/cli/xwsh/readline.h
xwmd/cli/xwsh/readline.c
CherryRL 集成
内置命令 xwmd/cli/xwsh/cmd.c 默认命令实现

注意:XWSH 模块需要配合标准输入输出(stdin/stdout)使用,通常通过串口或虚拟控制台实现。


核心功能

XWSH 的核心功能:命令解析算法、线程模型、错误处理和内部状态管理。

命令系统

XWSH 的命令系统:内置命令详解、外部命令添加方法和重名检查机制。

扩展机制

XWSH 的扩展机制:CherryRL 库集成细节、回调函数说明和历史记录实现。

集成指南

XWSH 的集成指南:两种运行模式的详细对比、代码示例和最佳实践。

API 参考

XWSH 模块的 API 参考:所有公共和内部函数的详细说明。