用途:本技能用于指导构建命令行界面工具,帮助在 CLI、TUI、GUI 之间做选择,并规范参数解析、输入输出、错误处理与分发。资料将 CLI 定位为管道中的过滤器:读入、转换、输出,遵循 Unix 哲学“只做好一件事并与其他工具组合”。
主要能力与要点:
- 选型:单一操作、可管道、可脚本化、CI/CD、简单提示选 CLI;仪表盘、多视图导航、实时监控选 TUI;非技术用户、复杂可视化、拖放选 GUI。
- 库参考:Python 用 typer 或 click,进度用 rich.progress,颜色与提示用 rich;TypeScript 用 commander 或 yargs,进度用 ora,颜色用 chalk,提示用 inquirer;C# 用 System.CommandLine,进度、颜色、提示用 Spectre.Console。
- 流分离:stdout 输出数据结果以便管道,stderr 输出进度、日志与错误。
- 退出码:0 成功、1 一般错误、2 用法错误、130 SIGINT。
- 配置优先级:命令行参数 > 环境变量 > 配置文件 > 默认值。
- 子命令结构:入口注册命令,commands 目录分文件,lib 放共享逻辑,tests 对应测试。
- 交互与非交互:用 sys.stdin.isatty() 判断;非交互且未加 --force 时应失败而非挂起。
- stdin 管道:支持文件参数与 - 约定。
- 信号处理:捕获 SIGINT 清理后以 130 退出。
- 反模式:进度写 stdout、静默失败、无 --help、硬编码路径、无退出码、管道中要求确认、捕获所有异常。
- 测试:Python 用 typer.testing.CliRunner 与 pytest;TypeScript 用 child_process.execSync 配 Jest。
- 帮助文本与错误信息:包含出错原因、影响与修复方式。
- 分发:Python 经 PyPI 用 pip install 或 pipx install,单文件用 pyinstaller --onefile;TypeScript 用 npm install -g,二进制用 pkg . 或 bun build --compile;C# 用 dotnet tool install -g,单文件用 dotnet publish -c Release -p:PublishSingleFile=true。
使用方式:按上述模式组织 CLI 应用,结合所选语言库实现参数、输出、退出码与测试。
限制与缺失:资料未提供具体价格、收费模式、平台支持范围或性能数据,这些事实暂未提供。