
文档教程知识库【免费下载链接】tldrCollaborative cheatsheets for console commands .项目地址https://gitcode.com/GitHub_Trending/tl/tldr点击查看免费下载dialog是 Linux 终端下经典的交互式对话框工具允许 Shell 脚本在字符界面中弹出发送消息、文本输入、是/否确认等窗口。本文以 tldr 仓库中的 阿拉伯语 dialog 速查页 为主体骨架结合其英文源页与仓库内相关页面、翻译与样式规范逐条拆解该页承载的三条核心命令的语法、输出机制与在脚本中的落地用法。读完后你将能独立读懂并改写这类终端对话框命令并掌握 tldr 页面“一行一例”速查格式背后的设计逻辑。命令定位dialog 是什么dialog是一个基于 ncurses 的文本界面工具作用是在终端中显示各类对话框dialog boxes让脚本在不依赖图形界面的前提下与用户交互。tldr 仓库对它的定位非常简洁在终端中显示对话框。Display dialog boxes on the terminal.对应页面分别为英文源页pages/linux/dialog.md阿拉伯语翻译页pages.ar/linux/dialog.md本文主文档该页面头部还包含两类固定元信息遵循 tldr 的 页面通用布局See also另请参阅指向功能相近的命令gum与whiptail便于用户横向对比替代方案相关机制见 see-also-mentions.mdMore information指向dialog的手册文档用于补充语法细节。值得注意的一个细节是在阿拉伯语页面中{{Message}}、{{height}}、{{width}}这类占位符全部保留了英文原样。这并非疏漏而是 tldr 的 common-arguments.md 明确规定的翻译规则——阿拉伯语ar和波斯语fa页面中的占位符不应被翻译以避免在从右向左阅读时出现文本翻转错乱。三条核心命令覆盖最常用的交互场景阿拉伯语速查页一共承载了 3 个示例恰好覆盖了 Shell 脚本中最常见的三种交互场景。tldr 页面规范要求每个页面最多不超过 8 个示例见 style-guide.md这 3 条属于“最小可用集”。场景命令交互行为显示消息dialog --msgbox {{Message}} {{height}} {{width}}展示消息用户按回车确认文本输入dialog --inputbox {{Enter text:}} {{8}} {{40}} 2{{output.txt}}输入文本结果写入文件是/否确认dialog --yesno {{Continue?}} {{7}} {{40}}二选一确认结果由退出码表达消息框--msgbox Message height widthdialog --msgbox {{Message}} {{height}} {{width}}--msgbox用于弹出一个仅含“确定/OK”按钮的消息窗口。三个位置参数依次是{{Message}}正文文本{{height}}窗口高度行数{{width}}窗口宽度列数。该模式适合展示提示、告警、安装完成信息等一次性通知用户回车后窗口即关闭脚本继续执行。输入框--inputbox Enter text: 8 40 2output.txtdialog --inputbox {{Enter text:}} {{8}} {{40}} 2{{output.txt}}--inputbox提供带文本框的窗口供用户输入一段文本。这是速查页中最具工程价值的一条示例因为它揭示了一个关键机制dialog默认将结果输出到标准错误stderr而非标准输出stdout。因此示例中使用了2{{output.txt}}把文件描述符 2stderr重定向到文件从而捕获用户输入。若直接写dialog --inputbox ... output.txt文件只会是空的——新手最常见的踩坑点。参数说明{{Enter text:}}窗口内显示的提示文案{{8}}、{{40}}示例中直接给出的是 8 行高、40 列宽的具体数值也可替换为变量2{{output.txt}}将用户输入从 stderr 重定向到output.txt。如需在脚本中直接取用结果可以把重定向换成命令替换并交换两个流例如result$(dialog --inputbox Please enter your name: 8 40 21 /dev/tty)其中21 /dev/tty将 stderr 合并到 stdout以便被$(...)捕获同时把对话框界面本身送回终端显示。确认框--yesno Continue? 7 40dialog --yesno {{Continue?}} {{7}} {{40}}--yesno展示带“是Yes/否No”两个按钮的确认窗口适合在脚本中设置继续/中止的关卡。与输入框不同它不通过输出来传值而是通过进程退出码exit code传值因此这条示例没有重定向选择“是”进程退出码为0选择“否”进程退出码为1按ESC取消进程退出码为255。脚本中可这样结合判断if dialog --yesno Continue installation? 7 40; then echo proceeding... else echo aborted. fi借助/||还能写成单行分支这正是仓库内gum页面中gum confirm示例所展示的同样模式见 pages/common/gum.md。深入原理输出通道、退出码与返回值约定综合上面三条示例可以提炼出dialog与调用方通信的两条通道数据通道输出流文本类结果如--inputbox、--menu的选中项默认写入stderr因此 tldr 示例统一用2重定向捕获使用--stdout选项可以改为直接输出到 stdout。状态通道退出码--yesno、--menu、--checklist等交互结果通过退出码表达0表示确认/选中1表示取消/未选中255表示用户按 ESC 中断。这两条通道的组合决定了“把窗口界面与用户数据分离”的设计界面绘制走终端控制数据通过可重定向的流返回使得dialog能干净地嵌入管道与脚本逻辑。速查页中--yesno不带重定向、--inputbox带2重定向正是对这一约定的精准体现。更多实用选项与衍生场景除了速查页覆盖的三种基础框体dialog还提供丰富的扩展能力可在其手册页man dialog中查阅常见的有--title {{title}}为窗口添加标题栏--menu text height width menu-height item1 tag1 ...多选项菜单选中项写回 stderr--checklist/--radiolist多选复选框与单选列表--passwordbox掩码显示的密码输入框--clear关闭窗口后清屏避免界面残留。这些选项与本页主题同源、可自由组合例如在输入框示例上叠加标题dialog --title Account Setup --inputbox Enter your name: 8 40 2output.txt与 whiptail、gum 的关联与选型速查页头部的 “See also:gum,whiptail” 并非随意列举而是 tldr 面向“同类命令提示”的规范做法。仓库内三个页面可对比参考工具仓库页面风格定位dialogpages/linux/dialog.md功能全面的 ncurses 对话框选项丰富whiptailpages/linux/whiptail.md更轻量的替代实现常预装于小型发行版页面中展示了--inputbox配合31 12 23交换流的捕获技巧gumpages/common/gum.md面向“让 Shell 脚本更精致”的新一代工具提供choose、confirm、spin等交互原语三者都解决“终端内交互”这一共同问题但底层机制与依赖不同。在脚本中需要依赖极简时优先考虑whiptail需要复杂对话框布局时选dialog需要更现代的体验如 spinner、格式化输出时则可评估gum。在 tldr 中编写与翻译此类页面应注意什么如果要在 tldr 仓库中新增或改进dialog这类命令页需要遵守的规则都能在本仓库找到依据页面结构标题必须是命令名# dialog紧跟开头的描述行与More information行示例数量不超过 8 个style-guide.mdSee also 提示在描述区注明关联命令翻译模板见 see-also-mentions.md占位符约定阿拉伯语与波斯语页面保留占位符原文common-arguments.md注释/注意事项若命令已废弃或需特殊提醒按 notes.md 的模板以 Note:标签形式放在描述之后静态校验可使用tldr-lint对页面格式做本地检查安装与用法见 style-guide.md仓库中的 test-tldr-lint.sh 亦展示了校验链路。小结tldr 的阿拉伯语dialog速查页用 3 条命令浓缩了终端对话框最核心的三种交互消息展示--msgbox、文本收集--inputbox stderr 重定向与二选一确认--yesno 退出码。读懂它们背后的输出通道与退出码约定就能理解dialog全部家族命令的设计逻辑并将这套模式直接迁移到--menu、--checklist等更复杂的场景中同时该页面本身也是观察 tldr 页面格式规范、翻译约定与 See also 机制的一个极佳范本。赞分享文档教程知识库【免费下载链接】tldrCollaborative cheatsheets for console commands .项目地址https://gitcode.com/GitHub_Trending/tl/tldr点击查看免费下载相关推荐Angular CDK Dialog 深度指南基于 Dialog 服务构建无样式模态对话框Angular CDK Dialog 深度指南基于 Dialog 服务构建无样式模态对话框 angular/cdk/dialog 中的 Dialog 服务用前端UI组件设计系统GitHub Desktop 对话框组件体系解析基于原生 dialog 的模态框设计与实践指南GitHub Desktop 对话框组件体系解析基于原生 dialog 的模态框设计与实践指南 本文以 GitHub Desktop 开源仓库中的 docs桌面应用版本控制开发工具rsuite Modal 告警对话框Alert Dialog实战基于 rolealertdialog 与静态遮罩的完整实现rsuite Modal 告警对话框Alert Dialog实战基于 rolealertdialog 与静态遮罩的完整实现 本文以 rsuite 官前端UI组件上一篇使用 babel/eslint-plugin-development 强化 Babel 插件开发的 ESLint 规则实践下一篇Terraform AWS Provider 数据源 aws_iam_instance_profiles 详解批量获取 IAM 角色关联的实例配置文件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考