Gum 交互式 Shell 脚本工具包
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/gum-interactive-shell-script-toolkit。
技能介绍
脚本交互的痛点
传统 shell 脚本在终端里往往只能"哑巴式"输出,要么让用户手动编辑配置文件再保存,要么脚本运行到中途卡住等待输入。要实现一个像样的交互式 CLI 体验——比如让用户选菜单、确认操作、输入参数——开发者需要手写大量 read 循环、case 分支和错误处理逻辑,代码容易变得臃肿且难以维护。尤其是当脚本需要展示结构化数据(表格、进度条、彩色输出)时,光是处理终端颜色和排版就够折腾半天。
Gum 如何解决问题
Gum 的思路是把常用的终端 UI 组件做成可以直接在 bash 里调用的命令。核心能力包括:
gum choose:从列表中选择一项或多项,支持过滤和限制数量gum confirm:弹出确认框,替代简陋的read -p交互gum input:带提示和默认值的文本输入gum filter:类似fzf的模糊搜索输入框gum spin:在命令执行期间显示加载动画,改善等待体验gum table:以表格形式展示结构化数据gum format:统一的文字着色、斜体、加粗等样式
使用时只需在 shell 脚本中链式调用这些命令即可。例如,用 gum choose 让用户选择要卸载的包,再把结果传给 xargs brew uninstall,整个交互流程几行代码就能搞定。
适用边界
Gum 本质上是对底层 TUI 库的封装,适合命令行工具和自动化脚本场景。如果你的 UI 需求超出了终端范围(比如需要桌面 GUI 或 Web 界面),Gum 帮不上忙。另外,脚本执行依赖终端环境,在 CI/CD 管道或非交互式 SSH 会话中,组件的交互式 UI 可能无法正常渲染,需要考虑降级方案,比如检测是否为 TTY 再决定是否调用 Gum。
使用场景
- 自动化部署脚本需要用户选择目标服务器和确认操作步骤
- 批量文件处理工具需要交互式输入参数并显示处理进度
- 运维脚本需要用表格展示服务状态并输入目标实例ID
- 开发工具链需要集成交互式选项卡选择构建配置
适合人员
- DevOps工程师需要为部署脚本添加交互式选项和进度反馈
- 后端开发者需要为内部CLI工具构建用户友好的交互界面
- 系统管理员需要将重复性操作封装成带确认提示的自动化脚本
- DevOps工程师需要用表格和颜色区分生产环境服务状态