dialog - 从 shell 显示对话框
总览 (SYNOPSIS)
dialog --clear
dialog --create-rc file
dialog --print-maxsize
dialog common-options box-options
描述 (DESCRIPTION)
Dialog 是一个 让 shell script 显示 对话框, 供你 陈列 各种问题 或 显示信息 的 程序. 已经 实现了 以下 对话框类型 (尽管 不是 所有的 都 必须 编译进 dialog):
calendar, checklist, form, fselect, gauge, infobox, inputbox, inputmenu, menu, msgbox (message), password, radiolist, tailbox, tailboxbg, textbox, timebox, 和 yesno (yes/no).
你可以在一个脚本中放置多个dialog 对话框:
-
使用 --and-widget 表示 强制 Dialog 处理到 下一个 dialog, 除非 按下 ESC 键取消.
-
简单地 加一个 标志 给 下一个 dialog 对话框, 可以 组合成 一条链. 当某个 dialog 的 返回值 为 非0 时, 如 Cancel 或者 No (另见 DIAGNOSTICS 节), dialog 链 结束.
某些部件(widget), 如 checklist, 会把 文本 写到 dialog 的输出端. 一般情况下 是 标准错误, 但是 这里 有一些 选项 可以 改变 它: --output-fd, --stderr 和 --stdout. 按下 Cancel (或ESC) 时 不会 输出 文本; 这种情况下 dialog 立即退出。
OPTIONS (选项)
所有的 选项 以 "--" 开头 (两个 ASCII 连字符, 有助于 locale 错乱的 系统).
单独的 "--" 作为 escape 符 使用, 也就是说, 命令行上的 下一个 标记(token) 不视为 选项:
dialog --title -- --不是选项
"--file" 选项 告诉 dialog 从 指定的文件中 读取 参数.
dialog --file parameterfile
不在双引号中的空白 被忽略 (使用 反斜线 来引用 单个字符). 读取的结果 被插入命令行, 并替换 --file 选项 和 它的参数. 命令行 将从 那个位置 继续 解释.
普通选项
--aspect ratio
当你 使用 自动调整大小 (宽和高 指定为 0) 的 时候, 这个参数 给你控制框 的 大小. 它 描述 宽/高,默认值 为9,意思是 1行 有 9个字符 大小。
--backtitle backtitle
指定 显示在 背景顶端 的 标题 为 backtitle.
--beep
每次 刷新屏幕时 发出 声音警告.
--beep-after
输入 被中断时 发出 声音警报. 例如 ctrl/C.
--begin y x
指定 对话框 左上角 在屏幕上 的 坐标.
--cancel-label string
为 "Cancel" 按钮 指定标签.
--clear
退出时 清屏. 这个参数 只应该 单独使用, 避免 和 别的参数 联合使用.
--colors
根据 下一个 字符 解释 嵌在 dialog 文本中的 "\Z" 序列, 它 告诉 dialog 设置 颜色 或者 视频属性: 0 到 7 是 curses 库 指定的 ANSI 颜色, 分别是: 黑色, 红色, 绿色, 黄色, 蓝色, 紫红色, 蓝绿色 和 白色. 粗体用 'b' 设置, 复位用 'B'. 反转用 'r' 设置, 复位用 'R'. 下划线用 'u' 设置, 复位用 'U'. 设置 可以 叠加. 例如, "\Zb\Z1" 把 后面的 文本 显示为 亮红色. 恢复 正常设置 用 "\Zn".
--cr-wrap
把 嵌在 dialog 文本里面 的 换行符(newline) 解释为 屏幕上的 换行. 否则 dialog 只在 文本框(text box) 内 需要对齐的 地方 下卷换行(wrap). 即使 可以 通过 这个选项 控制 断行, dialog 仍旧 会把 超过 文本框宽度 的 文字 下卷换行. 不用 cr-wrap, 文本布局 可以 格式化的 很好看, 脚本源文件 不需要 考虑 dialog 框中 会显示成 什么样子.
参看 --no-collapse 和 --trim 选项.
--create-rc file
当 dialog 支持 运行时配置 时, 这个选项 可用来 转储 一个 示例配置文件, 并保存到 file 指定的 文件.
--defaultno
设置 yes/no 对话框 的 默认值为 No. 同样的, 可以使 提供 "OK" 和 "Cancel" 按钮的 组件 默认 按钮 为 Cancel. 如果 给出了 --nocancel 选项, 则 覆盖 这个选项,使 默认按钮 为 "YES" (内部看 和 "OK" 按钮 一样).
--default-item string
设置 checklist, form, 或 menu 对话框 的 默认项. 通常 默认为 对话框 的 第一项.
--exit-label string
为 "EXIT" 按钮 指定标签.
--extra-button
在 "OK" 和 "Cancel" 按钮 之间 添加 一个 按钮.
--extra-label string
为 添加的按钮 指定标签. 注意: 在 inputmenu 组件中, 默认是 "Rename".
--help
在 dialog 的 输出端 显示 帮助信息. 如果 没有 给出选项, 帮助信息 就会被 打印出来.
--help-button
在 checklist, radiolist 和 menu 对话框 的 "OK" 和 "Cancel" 按钮 后面显示 一个 帮助按钮. 如果 同时 也给出了 --item-help 选项, 退出时返回值 和 "OK" 按钮的 返回值 一样, 而且 --item-help 的 内容 会被写到 会话的 输出. 否则, 返回状态 显示 Help 按钮 被按下, 并且 没有信息 被 打印出来.
--help-label string
为 "Help" 按钮 指定标签.
--help-status
如果 选择了 help-button, 在 item-help 的 "HELP" 帮助信息 之后 会显示 checklist,radiolist 或者 form 的信息. 这个选项 可以 在处理完 help 请求后重建 checklist 的状态.
--ignore
忽略 dialog 不认可的 选项. 众所周知 的 一个 是 "--icon" 选项, 任何 情况下 都会 被忽略, 但这是 一个 相对 其他实现 而言 兼容性 较好的选择.
--input-fd fd
从给定的 文件描述符 中 读取 键盘输入. 大部分的 dialog 脚本 从 标准输入读取, 但是 gauge 组件 从 管道 读取 (那通常是 标准输入). 当 dialog 试着重新 打开 终端 时 某些配置 不能 正确执行.如果 你的脚本 必须 工作 在 那种 类型的 环境中, 可以 使用 这个选项.
--insecure
输入密码时 回显 星号(*), 将使得 password 组件 更友好 但 较不安全.
--item-help
在 屏幕底部 为 当前选择的项目 增加 一列, 用以 解释说明 checklist, radiolist 和 menu 对话框的 标签数据.
--keep-window
退出时 不清屏 或 重绘窗口. 当 几个组件 在 同一个 程序 中 运行时, 对于 保留 窗口内容 很有用. 注意, curses 在 开始 一个 新任务时 会 清空屏幕.
--max-input size
限制 输入的字符串 在 给定的大小 之内. 如果 没有指定, 默认是 2048.
--no-cancel
--nocancel
在 checklist, inputbox 和 menu 对话框 中 禁用 "Cancel" 按钮. 脚本 仍然 可以 监测 用户 是否 按下 ESC 键 退出.
--no-collapse
通常 dialog 将 tab符 转化为 空格, 并在 message 对话框 中 将 多个 空格减少为 一个 空格. 使用 这个选项 可以 禁用 这个功能. 应该 注意的是, dialog 仍然会 根据 --cr-wrap 和 --trim 选项 回卷(wrap) 文字.
--no-kill
告诉 dialog 放置 一个 tailboxbg 对话框 在后台, 在 dialog 的 输出端 打印 它的 进程ID号. 后台进程 的 SIGHUP 被禁止.
--no-label string
为 "NO" 按钮 指定标签.
--no-shadow
禁止 对话框 投向 右下方 的 阴影.
--ok-label string
为 "OK" 按钮 指定标签.
--output-fd fd
直接输出到 给定的 文件描述符. 多数 dialog 脚本 写到 标准错误, 但是 错误信息 也可能 输出到 那里, 这取决于 你的 脚本.
--print-maxsize
在 dialog 的 输出端 打印 dialog 对话框 最大尺寸 (也就是 屏幕大小). 这个参数 要 单独使用, 不能和 别的参数 一起 使用.
--print-size
在 dialog 的 输出端 打印 每一个 dialog 对话框 的 大小.
--print-version
在 dialog 的 输出端 打印 dialog 的 版本. 这个参数 要 单独使用, 不能和 别的参数 一起 使用.
--separate-output
对于 chicklist 组件, 一次性的 把 结果 输出到 一行 上, 没有 长度 限制. 这 有利于 让其他 程序 分析.
--separator string
--separate-widget string
指定 一个 字符串, 用来 分离 dialog 中 每个 组件 的 输出. 它 可以 简化 对 某个 dialog 中 几个组件 结果 的 分析. 如果 没有 给出 这个选项, 默认的 分隔字符串 是 一个 tab 字符.
--shadow
在 每一个 dialog 对话框 的 右下方 显示 阴影.
--single-quoted
对于 checklist 的输出, 象 item-help 的 帮助文本 一样, 如果 需要, 就使用 单引号 (如果 不需要 就 不用 引号). 如果 没有 设置 这个选项, dialog 使用 双引号 来引用 每个选项. 这需要 临时使用 反斜杆 以便 输出 对 shell 脚本 有用.
--size-err
在试图 使用 对话框 之前 检查 对话框 形成后的 大小, 如果 大于 屏幕 就会 打印结果大小. (这个参数 已废弃了, 所有 新窗口 都会被 监测).
--sleep secs
处理完 一个 对话框 后 睡眠(延迟) 给定的 时间(秒).
--stderr
直接输出 到 标准错误. 这是 默认项, 因为 curses 一般 将 屏幕更新 写到 标准输出.
--stdout
直接输出 到 标准输出. 这个选项 用于 兼容 Xdialog, 但是 不推荐 在 可移植的脚本中 使用, 因为 curses 一般 将 屏幕更新 写到 标准输出. 如果 使用 这个选项, dialog 为了 显示, 会试着 重新 打开 终端. 根据 你的平台 和 环境, 这 可能会 失败.
--tab-correct
转换 tab 字符 为 一个或多个 空格. 否则 根据 curses库的 说明 渲染 tab.
--tab-len n
如果 给出了 "--tab-correct" 选项, 指定 一个 tab符号 为 多少个 空格. 默认是 8.
--timeout secs
如果 指定的 秒数内 没有 用户 应答 就 超时退出 (带 错误码). 如果 后台使用了 "--tailboxbg" 选项, 它 就 失效. 指定为 0秒 的 超时 将被 忽略.
--title title
指定 显示在 对话框 顶部 的 标题 为 title.
--trim
消除 起始处 的 空白部分,调整 从文字上新的一行来调整并显示消息正文 中的 字面换行 (literal newline) 和 重复的 空白部分.
参见 --cr-wrap 和 --no-collapse 选项.
--version
同 "--print-version".
--visit-items
修改 checklist, radiobox, menubox 和 inputmenu 的 tab键 遍历功能, 使得列表中的 选项 可以用 tab键 访问. 这是 一个 视觉上的 帮助, 光标的位置 可以 帮助 一些 用户.
--yes-label string
为 "Yes" 按钮 指定 标签.
对话框选项 (Box Options)
所有的 dialog 对话框 至少有 三个参数:
text
对话框 的 标题 或 内容.
height
对话框的高度.
width
对话框的宽度.
其它参数 依赖于 对话框 类型.
--calendar text height width day month year
日历框 calendar 在 单独的 可调整的 窗口中 显示 月/日/年. 如果 没有给出 日/月/年 的值, 或 所给的 值 为 负数, 将会 使用 当前日期 的 相应值 代替. 可以用 上, 下, 左, 右 这几个 方向键 增加 或 减小 它们的 值, 用 VI 风格的 h, j, k, l 键 在 日期 之间 移动, tab 或 backtab (退格制表符) 在 窗口 之间移动. 如果 所给的年 的 值 为0, 那么 当前日期的 年份 将作为 初始值.
退出的 时候 会以 日/月/年 的 格式 打印 日期.
--checklist text height width list-height [ tag item status ] ...
checklist 对话框 就象 一个 menu 对话框; 在表单中 列出 多个选项. 用户 可以 选中 或 去掉 每一个 选项, 而不是 在 选项 之间 选择 一个. 可以用 status 来指定 每个选项 默认是 选中 还是 去除.
退出时, 被选中的 选项的 tag 字符串 会以 列表的 格式 输出到 dialog 的 输出端. 如果 没有 给出 --separate-output 选项, 字符串 将被 引号 括起来 以便 脚本 分离 它们. 参看 修改 引号 的 --single-quoted 选项.
--form text height width formheight [ label y x item y x flenilen
] ..."
form 对话框 显示 一个 由 标题(label) 和 域(field) 组成的 表单, 而这些标签和域 被放置在 给定 坐标的 可滚动窗口 上. 域的 长度 flen 和输入 长度 ilen 表明了 域的 最大长度. 前者 定义了 被选择域 的 可显示长度, 后者 定义了 域中 可输入数据 的 长度. 如果 flen 为0, 对应的域 就不能 更改. 如果 ilen 为0,则 被设置为 flen 的值.
使用 上, 下 箭头( 或者 control/N, control/P) 在 域 之间 移动, tab键 在 窗口 之间 移动.
退出时, 表单域的 内容 被写入到 dialog 的 输出端, 每个域 由 换行(newline) 分隔. 只用于输入 的 区域 (flen为0) 不会 被输出.
--fselect filepath height width
文件选择对话框 (file-selection dialog) 显示 一个 文本条目窗口, 上面的两个窗口 标着 目录名 和 文件名, 你 可以 输入 一个 文件名 (或目录).
文件路径 filepath 可以是 目录窗口 显示的 路径 和 文件, 文本条目窗口包含了 预选的 文件名.
使用 tab键 或 箭头键 可以 在 窗口 之间 移动. 在 目录窗口 或 文件窗口 内使用 up/down 箭头键 在 列表 中 选择. 空格键 复制 当前的选择 到 文本条目窗口.
键入 任何 可打印的 字符 可以 把 焦点 移到 文本条目窗口. 键入字符 也可以滚动 目录窗口 和 文件窗口 到 最匹配项.
回车键 或 "OK" 按钮 接受 文本条目窗口 中 当前的 结果 并 退出.
退出时, 文本条目窗口 的 内容 被写到 dialog 的 输出端.
--gauge text height width [percent]
gauge 对话框 底部 显示 一个 指示百分比 的 计量器. 新的 百分比 从 标准输入 读取, 一行 一个 整数. 计量器 在收到 新的 百分比 时 更新 一次. 如果 标准输入 读得 字符串 "XXX", 那么 从 下一行 到 另一个 "XXX" 被 用作新的 提示符. 标准输入 读到 文件结束符(EOF) 时, gauge 便退出.
百分数 按 指定的 百分比 指示 进度, 如果 没有 指定, 默认是0.
退出时, 没有 文本 被写到 dialog 的 输出端. 这个组件 不接受 输入, 所以 退出状态 总是 OK.
--infobox text height width
info 对话框 基本上是 message 对话框. 可是 在 这种情况 下, dialog 在 显示完 信息 之后会 马上 退出. 退出的时候 并不清屏, 结果信息 会 停留在 屏幕上, 直到 稍后 调用 shell 脚本 清屏. 这在 你 需要 告诉 用户 一些 正在进行 的 操作 可能 需要 一些时间 来完成的 时候 很有用.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 返回 一个 ESC 退出状态.
--inputbox text height width [init]
input 对话框 在 你向 用户 提问 并把 输入的文本 作为 回答 时 很有用. 提供的 init 将作为 预置的 输入文本. 输入文本 的 时候, 退格键, 删除键 和 光标键 可以 用来 纠正 输入错误. 如果 输入的字符串 超出了 对话框的宽度, 输入区域 会 自动滚动.
退出时, 输入的字符串 会 被打印到 dialog 的 输出端.
--inputmenu text height width menu-height [ tag item ] .
inputmenu 对话框 和 普通的 menu 对话框 很相似. 它们 之间 只有一些差别:
1.
条目选项 不会 自动居中, 而是 左对齐.
2.
额外的按钮 (叫做 Rename) 表示 如果 按下的话 可以 修改 当前的条目.
3.
按下 Rename 按钮 可以 修改 当前的条目. dialog 会 输出 如下内容:
RENAMED -
--menu text height width menu-height [ tag item ] ...
顾名思义, menu 对话框 以 菜单的形式 提供 一列条目 供 用户选择. 条目 按 给定的顺序 显示. 每个条目 由 一个 tag 字符串 和 一个 item 字符串 组成. tag 给 条目 一个名称 以便和 菜单中的 其他条目 区分开来. item 字符串 是对 条目 所代表的选项 的 简短描述. 用户 可以 通过 下列键在 菜单条目 之间 移动: 光标键, 作为 热键 的 tag 的 首字母, 或者 数字键 1-9. 菜单 一次 显示 menu-height 指定的 条目 个数, 如果 超过 这个 数目, 菜单 可以 卷动显示.
退出时, 所选择的 菜单选项的 标记(tag) 会 被打印到 dialog 的输出端. 如果 给出了 --help-button 选项, 用户 选择了 help 按钮 以后, 相应的 帮助文档 会 被打印出来.
--msgbox text height width
message 对话框 和 yes/no 对话框 很相似. 唯一的不同 就是 message 对话框 只有 一个 OK 按钮. 你 可以 用 这个 对话框 来 显示 你 喜欢的 任何信息. 阅读完 信息 之后, 用户可以 按下 ENTER 键, dialog 就会 退出, 并且 让 脚本 继续 操作.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--passwordbox text height width [init]
除了 不显示 用户输入的文本 之外, password 对话框 和 输入框 相似. 它在 提示 输入密码 或 其他 敏感信息 时 很有用. 注意, 如果 通过 "init" 传递了某些数据, 这些数据 可能会被 监听者 从 系统进程表 中 访问到, 而且 用户 会觉得 看不见的 默认密码 令人困惑. 因此, 极不鼓励 使用 "init" 参数. 如果 你 不介意 密码 的 话, 请参看 "--insecure" 选项.
退出时, 输入的字符串 会 被打印到 dialog 的输出端.
--radiolist text height width list-height [ tag item status fR]
..." radiolist 对话框 和 menu 对话框 相似. 唯一的 不同 是, 你 可以通过 设定 某一个 选项 的 status 为 on 来 指定 它 是否 为 当前的选择.
退出时, 被选择项 的 名称 会被写入到 dialog 的 输出端.
--tailbox file height width
在 对话框内 显示 一个 文件的 内容, 就象 执行 "tail -f" 命令 一样. 可以使用 VI风格的 h 和 l 或者 方向键 左右滚动 屏幕. 数字键 '0' 复位 滚屏状态.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--tailboxbg file height width
在 对话框内 显示 一个 文件的 内容, 作为 后台任务 执行, 就象 执行 "tail -f" 命令 一样. 可以使用 VI风格的 h 和 l 或者 方向键 左右滚动 屏幕. 数字键 '0' 复位 滚屏状态.
如果 屏幕上 同时有 其他组件 (--and-widget), dialog 会 特殊处理 后台任务. dialog 会 轮流 执行 同一个 进程里 所有的 tailboxbg 组件, 直到 这些 组件 被关闭 (如按下 "OK" 键). 可以 使用 tab键 在 屏幕的组件 之间 来回移动, 可以 单独 关闭其中的 组件, 比如, 按下了 ENTER 键。一旦 关闭了 非tailboxbg组件, 如果 给出过 --no-kill 选项, dialog 便在后台 fork 自己, 并且 打印出 它的 进程ID.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
注意: 旧版本的 dialog 会 立即fork 并 试图 单独 更新屏幕. 除了 性能 不足, 它 可能 无法工作. 一些 更旧的 脚本 在 轮转策略下可能 无法 正确工作.
--textbox file height width
text 文本框 允许你 在一个 dialog框中 显示 一个 文本文件的 内容. 就象一个 简单的 文本阅读器. 在 多数键盘 上, 用户 可以使用 光标, PGUP/PGDN键以及 HOME/END键 在 文本之间 移动. 如果在 对话框中 要显示的 文本行 过长, 可以 使用 LEFT/RIGHT键 水平滚动 文本. 你 还可以 使用 VI风格的 h, j, k, l 来替代 光标键, B或者N 来替代 PGUP/PGDN键. 向上和向下 滚动屏幕 可以 使用 VI风格的 'k' 和 'j', 或者 方向键. 向左和向右 滚动屏幕 可以 使用 VI风格的 更方便的是, 它 同样 支持 VI风格的 向前和向后 搜索功能.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--timebox text height [width hour minute second]
显示 一个 允许你 选择 小时, 分钟 和 秒 的 对话框. 如果 没有给出 时/分/秒 的 值, 或者 给出的值 是 负数, 将使用 当前日期. 可以用 上, 下, 左, 右 这几个 方向键 来 增大 或 减小 它们的 值. 使用 tab 或者 backtab (backspace?) 在 窗口之间 移动.
退出时, 按 hour:minute:second 的 格式 打印 结果.
--yesno text height width
显示 一个 高度为 height 行, 宽度为 width 列的 yes/no 对话框. 对话框内 显示 指定的 text 字符串. 如果 字符串 超过 一行的 宽度, 它会自动 在合适的 地方 分成 几行 显示. text 字符串 也可以 含有 子字符串 "\n" 或者 换行符 `\n' 来 明确地 换行. 这个对话框 在那些 要求 用户 回答 YES 或 NO 时 很有用. 对话框 含有 一个 Yes 和 一个 No 按钮, 用户可以 用 TAB 键 来回 选择.
退出时, 没有 文本 被 写到 dialog 的 输出端. 除了 "Yes" 和 "No" 返回值 (参看 DIAGNOSTICS) 外, 还 可能 返回 一个 ESC 退出状态.
用于 "Yes" 和 "No" 的 返回值 与 "OK" 和 "Cancel" 一致, 内部看 没有区别.
运行时配置 (RUN-TIME CONFIGURATION)
1.
键入 以下命令 以 创建 一个 样本配置文件:
"dialog --create-rc"
2.
开始时, dialog 确定 使用 如下的设置:
a)
如果 设置了 环境变量 DIALOGRC, 其内容 决定 配置文件 的 名称.
b)
如果 没有 找到 (a) 中的 文件, 则使用 $HOME/.dialogrc 作为 配置文件.
c)
如果 没有 找到 (b) 中的 文件, 则 尝试使用 编译时 设置的 GLOBALRC 文件, 就是说, /etc/dialogrc.
d)
如果 没有 找到 (c) 中的 文件, 使用 编译的 默认配置.
3.
编辑 样本配置文件 并拷贝到 dialog 可以找到 的 地方, 如 上面 第二步 提到的 地方.
环境变量 (ENVIRONMENT)
DIALOGOPTS
定义 这个变量 以便在 每个组件中 应用 一些 公共选项. 大部分 公共选项在 处理 每个组件 前 被复位. 如果 在 这个变量 中 设置了 选项, 它们 将在复位后 传给 dialog. 就象在 --file 选项中, 双引号 和 反斜杆会 被解释.
--file 选项 不认为是 公共选项(所以 你 不能 把它 嵌在 这个环境变量 中).
DIALOGRC
定义 这个变量 以便 指定 配置文件的 名称.
DIALOG_CANCEL
DIALOG_ERROR
DIALOG_ESC
DIALOG_EXTRA
DIALOG_HELP
DIALOG_OK
定义 这些变量 以改变 Cancel (1), error (-1), ESC (255), Extra (3), Help (2), 或 OK (0) 的 返回值. 通常 shell脚本 不能 区分 -1 和 255.
DIALOG_TTY
设置 这个变量 为 1, 为 给出了 "--stdout" 选项 并 重定向 标准输出 的 老版本 dialog 提供 兼容.
文件 (FILES)
$HOME/.dialogrc
默认配置文件
示例 (EXAMPLES)
dialog 的 源代码 中 包含 一些 示例, 关于 如何使用 不同的 对话框选项以及 它们 的 样子. 到 源代码的 samples/ 目录 看看吧.
诊断 (DIAGNOSTICS)
退出状态 可以 被 环境变量 改变. 一般说来是:
0
按下 Yes或OK 按钮 退出.
1
按下 No或Cancel 按钮 退出.
2
按下了 Help 按钮.
3
按下了 Extra 按钮.
-1
dialog 内部 发生错误 或 按下 ESC 键 退出.
总览 (SYNOPSIS)
dialog --clear
dialog --create-rc file
dialog --print-maxsize
dialog common-options box-options
描述 (DESCRIPTION)
Dialog 是一个 让 shell script 显示 对话框, 供你 陈列 各种问题 或 显示信息 的 程序. 已经 实现了 以下 对话框类型 (尽管 不是 所有的 都 必须 编译进 dialog):
calendar, checklist, form, fselect, gauge, infobox, inputbox, inputmenu, menu, msgbox (message), password, radiolist, tailbox, tailboxbg, textbox, timebox, 和 yesno (yes/no).
你可以在一个脚本中放置多个dialog 对话框:
-
使用 --and-widget 表示 强制 Dialog 处理到 下一个 dialog, 除非 按下 ESC 键取消.
-
简单地 加一个 标志 给 下一个 dialog 对话框, 可以 组合成 一条链. 当某个 dialog 的 返回值 为 非0 时, 如 Cancel 或者 No (另见 DIAGNOSTICS 节), dialog 链 结束.
某些部件(widget), 如 checklist, 会把 文本 写到 dialog 的输出端. 一般情况下 是 标准错误, 但是 这里 有一些 选项 可以 改变 它: --output-fd, --stderr 和 --stdout. 按下 Cancel (或ESC) 时 不会 输出 文本; 这种情况下 dialog 立即退出。
OPTIONS (选项)
所有的 选项 以 "--" 开头 (两个 ASCII 连字符, 有助于 locale 错乱的 系统).
单独的 "--" 作为 escape 符 使用, 也就是说, 命令行上的 下一个 标记(token) 不视为 选项:
dialog --title -- --不是选项
"--file" 选项 告诉 dialog 从 指定的文件中 读取 参数.
dialog --file parameterfile
不在双引号中的空白 被忽略 (使用 反斜线 来引用 单个字符). 读取的结果 被插入命令行, 并替换 --file 选项 和 它的参数. 命令行 将从 那个位置 继续 解释.
普通选项
--aspect ratio
当你 使用 自动调整大小 (宽和高 指定为 0) 的 时候, 这个参数 给你控制框 的 大小. 它 描述 宽/高,默认值 为9,意思是 1行 有 9个字符 大小。
--backtitle backtitle
指定 显示在 背景顶端 的 标题 为 backtitle.
--beep
每次 刷新屏幕时 发出 声音警告.
--beep-after
输入 被中断时 发出 声音警报. 例如 ctrl/C.
--begin y x
指定 对话框 左上角 在屏幕上 的 坐标.
--cancel-label string
为 "Cancel" 按钮 指定标签.
--clear
退出时 清屏. 这个参数 只应该 单独使用, 避免 和 别的参数 联合使用.
--colors
根据 下一个 字符 解释 嵌在 dialog 文本中的 "\Z" 序列, 它 告诉 dialog 设置 颜色 或者 视频属性: 0 到 7 是 curses 库 指定的 ANSI 颜色, 分别是: 黑色, 红色, 绿色, 黄色, 蓝色, 紫红色, 蓝绿色 和 白色. 粗体用 'b' 设置, 复位用 'B'. 反转用 'r' 设置, 复位用 'R'. 下划线用 'u' 设置, 复位用 'U'. 设置 可以 叠加. 例如, "\Zb\Z1" 把 后面的 文本 显示为 亮红色. 恢复 正常设置 用 "\Zn".
--cr-wrap
把 嵌在 dialog 文本里面 的 换行符(newline) 解释为 屏幕上的 换行. 否则 dialog 只在 文本框(text box) 内 需要对齐的 地方 下卷换行(wrap). 即使 可以 通过 这个选项 控制 断行, dialog 仍旧 会把 超过 文本框宽度 的 文字 下卷换行. 不用 cr-wrap, 文本布局 可以 格式化的 很好看, 脚本源文件 不需要 考虑 dialog 框中 会显示成 什么样子.
参看 --no-collapse 和 --trim 选项.
--create-rc file
当 dialog 支持 运行时配置 时, 这个选项 可用来 转储 一个 示例配置文件, 并保存到 file 指定的 文件.
--defaultno
设置 yes/no 对话框 的 默认值为 No. 同样的, 可以使 提供 "OK" 和 "Cancel" 按钮的 组件 默认 按钮 为 Cancel. 如果 给出了 --nocancel 选项, 则 覆盖 这个选项,使 默认按钮 为 "YES" (内部看 和 "OK" 按钮 一样).
--default-item string
设置 checklist, form, 或 menu 对话框 的 默认项. 通常 默认为 对话框 的 第一项.
--exit-label string
为 "EXIT" 按钮 指定标签.
--extra-button
在 "OK" 和 "Cancel" 按钮 之间 添加 一个 按钮.
--extra-label string
为 添加的按钮 指定标签. 注意: 在 inputmenu 组件中, 默认是 "Rename".
--help
在 dialog 的 输出端 显示 帮助信息. 如果 没有 给出选项, 帮助信息 就会被 打印出来.
--help-button
在 checklist, radiolist 和 menu 对话框 的 "OK" 和 "Cancel" 按钮 后面显示 一个 帮助按钮. 如果 同时 也给出了 --item-help 选项, 退出时返回值 和 "OK" 按钮的 返回值 一样, 而且 --item-help 的 内容 会被写到 会话的 输出. 否则, 返回状态 显示 Help 按钮 被按下, 并且 没有信息 被 打印出来.
--help-label string
为 "Help" 按钮 指定标签.
--help-status
如果 选择了 help-button, 在 item-help 的 "HELP" 帮助信息 之后 会显示 checklist,radiolist 或者 form 的信息. 这个选项 可以 在处理完 help 请求后重建 checklist 的状态.
--ignore
忽略 dialog 不认可的 选项. 众所周知 的 一个 是 "--icon" 选项, 任何 情况下 都会 被忽略, 但这是 一个 相对 其他实现 而言 兼容性 较好的选择.
--input-fd fd
从给定的 文件描述符 中 读取 键盘输入. 大部分的 dialog 脚本 从 标准输入读取, 但是 gauge 组件 从 管道 读取 (那通常是 标准输入). 当 dialog 试着重新 打开 终端 时 某些配置 不能 正确执行.如果 你的脚本 必须 工作 在 那种 类型的 环境中, 可以 使用 这个选项.
--insecure
输入密码时 回显 星号(*), 将使得 password 组件 更友好 但 较不安全.
--item-help
在 屏幕底部 为 当前选择的项目 增加 一列, 用以 解释说明 checklist, radiolist 和 menu 对话框的 标签数据.
--keep-window
退出时 不清屏 或 重绘窗口. 当 几个组件 在 同一个 程序 中 运行时, 对于 保留 窗口内容 很有用. 注意, curses 在 开始 一个 新任务时 会 清空屏幕.
--max-input size
限制 输入的字符串 在 给定的大小 之内. 如果 没有指定, 默认是 2048.
--no-cancel
--nocancel
在 checklist, inputbox 和 menu 对话框 中 禁用 "Cancel" 按钮. 脚本 仍然 可以 监测 用户 是否 按下 ESC 键 退出.
--no-collapse
通常 dialog 将 tab符 转化为 空格, 并在 message 对话框 中 将 多个 空格减少为 一个 空格. 使用 这个选项 可以 禁用 这个功能. 应该 注意的是, dialog 仍然会 根据 --cr-wrap 和 --trim 选项 回卷(wrap) 文字.
--no-kill
告诉 dialog 放置 一个 tailboxbg 对话框 在后台, 在 dialog 的 输出端 打印 它的 进程ID号. 后台进程 的 SIGHUP 被禁止.
--no-label string
为 "NO" 按钮 指定标签.
--no-shadow
禁止 对话框 投向 右下方 的 阴影.
--ok-label string
为 "OK" 按钮 指定标签.
--output-fd fd
直接输出到 给定的 文件描述符. 多数 dialog 脚本 写到 标准错误, 但是 错误信息 也可能 输出到 那里, 这取决于 你的 脚本.
--print-maxsize
在 dialog 的 输出端 打印 dialog 对话框 最大尺寸 (也就是 屏幕大小). 这个参数 要 单独使用, 不能和 别的参数 一起 使用.
--print-size
在 dialog 的 输出端 打印 每一个 dialog 对话框 的 大小.
--print-version
在 dialog 的 输出端 打印 dialog 的 版本. 这个参数 要 单独使用, 不能和 别的参数 一起 使用.
--separate-output
对于 chicklist 组件, 一次性的 把 结果 输出到 一行 上, 没有 长度 限制. 这 有利于 让其他 程序 分析.
--separator string
--separate-widget string
指定 一个 字符串, 用来 分离 dialog 中 每个 组件 的 输出. 它 可以 简化 对 某个 dialog 中 几个组件 结果 的 分析. 如果 没有 给出 这个选项, 默认的 分隔字符串 是 一个 tab 字符.
--shadow
在 每一个 dialog 对话框 的 右下方 显示 阴影.
--single-quoted
对于 checklist 的输出, 象 item-help 的 帮助文本 一样, 如果 需要, 就使用 单引号 (如果 不需要 就 不用 引号). 如果 没有 设置 这个选项, dialog 使用 双引号 来引用 每个选项. 这需要 临时使用 反斜杆 以便 输出 对 shell 脚本 有用.
--size-err
在试图 使用 对话框 之前 检查 对话框 形成后的 大小, 如果 大于 屏幕 就会 打印结果大小. (这个参数 已废弃了, 所有 新窗口 都会被 监测).
--sleep secs
处理完 一个 对话框 后 睡眠(延迟) 给定的 时间(秒).
--stderr
直接输出 到 标准错误. 这是 默认项, 因为 curses 一般 将 屏幕更新 写到 标准输出.
--stdout
直接输出 到 标准输出. 这个选项 用于 兼容 Xdialog, 但是 不推荐 在 可移植的脚本中 使用, 因为 curses 一般 将 屏幕更新 写到 标准输出. 如果 使用 这个选项, dialog 为了 显示, 会试着 重新 打开 终端. 根据 你的平台 和 环境, 这 可能会 失败.
--tab-correct
转换 tab 字符 为 一个或多个 空格. 否则 根据 curses库的 说明 渲染 tab.
--tab-len n
如果 给出了 "--tab-correct" 选项, 指定 一个 tab符号 为 多少个 空格. 默认是 8.
--timeout secs
如果 指定的 秒数内 没有 用户 应答 就 超时退出 (带 错误码). 如果 后台使用了 "--tailboxbg" 选项, 它 就 失效. 指定为 0秒 的 超时 将被 忽略.
--title title
指定 显示在 对话框 顶部 的 标题 为 title.
--trim
消除 起始处 的 空白部分,调整 从文字上新的一行来调整并显示消息正文 中的 字面换行 (literal newline) 和 重复的 空白部分.
参见 --cr-wrap 和 --no-collapse 选项.
--version
同 "--print-version".
--visit-items
修改 checklist, radiobox, menubox 和 inputmenu 的 tab键 遍历功能, 使得列表中的 选项 可以用 tab键 访问. 这是 一个 视觉上的 帮助, 光标的位置 可以 帮助 一些 用户.
--yes-label string
为 "Yes" 按钮 指定 标签.
对话框选项 (Box Options)
所有的 dialog 对话框 至少有 三个参数:
text
对话框 的 标题 或 内容.
height
对话框的高度.
width
对话框的宽度.
其它参数 依赖于 对话框 类型.
--calendar text height width day month year
日历框 calendar 在 单独的 可调整的 窗口中 显示 月/日/年. 如果 没有给出 日/月/年 的值, 或 所给的 值 为 负数, 将会 使用 当前日期 的 相应值 代替. 可以用 上, 下, 左, 右 这几个 方向键 增加 或 减小 它们的 值, 用 VI 风格的 h, j, k, l 键 在 日期 之间 移动, tab 或 backtab (退格制表符) 在 窗口 之间移动. 如果 所给的年 的 值 为0, 那么 当前日期的 年份 将作为 初始值.
退出的 时候 会以 日/月/年 的 格式 打印 日期.
--checklist text height width list-height [ tag item status ] ...
checklist 对话框 就象 一个 menu 对话框; 在表单中 列出 多个选项. 用户 可以 选中 或 去掉 每一个 选项, 而不是 在 选项 之间 选择 一个. 可以用 status 来指定 每个选项 默认是 选中 还是 去除.
退出时, 被选中的 选项的 tag 字符串 会以 列表的 格式 输出到 dialog 的 输出端. 如果 没有 给出 --separate-output 选项, 字符串 将被 引号 括起来 以便 脚本 分离 它们. 参看 修改 引号 的 --single-quoted 选项.
--form text height width formheight [ label y x item y x flenilen
] ..."
form 对话框 显示 一个 由 标题(label) 和 域(field) 组成的 表单, 而这些标签和域 被放置在 给定 坐标的 可滚动窗口 上. 域的 长度 flen 和输入 长度 ilen 表明了 域的 最大长度. 前者 定义了 被选择域 的 可显示长度, 后者 定义了 域中 可输入数据 的 长度. 如果 flen 为0, 对应的域 就不能 更改. 如果 ilen 为0,则 被设置为 flen 的值.
使用 上, 下 箭头( 或者 control/N, control/P) 在 域 之间 移动, tab键 在 窗口 之间 移动.
退出时, 表单域的 内容 被写入到 dialog 的 输出端, 每个域 由 换行(newline) 分隔. 只用于输入 的 区域 (flen为0) 不会 被输出.
--fselect filepath height width
文件选择对话框 (file-selection dialog) 显示 一个 文本条目窗口, 上面的两个窗口 标着 目录名 和 文件名, 你 可以 输入 一个 文件名 (或目录).
文件路径 filepath 可以是 目录窗口 显示的 路径 和 文件, 文本条目窗口包含了 预选的 文件名.
使用 tab键 或 箭头键 可以 在 窗口 之间 移动. 在 目录窗口 或 文件窗口 内使用 up/down 箭头键 在 列表 中 选择. 空格键 复制 当前的选择 到 文本条目窗口.
键入 任何 可打印的 字符 可以 把 焦点 移到 文本条目窗口. 键入字符 也可以滚动 目录窗口 和 文件窗口 到 最匹配项.
回车键 或 "OK" 按钮 接受 文本条目窗口 中 当前的 结果 并 退出.
退出时, 文本条目窗口 的 内容 被写到 dialog 的 输出端.
--gauge text height width [percent]
gauge 对话框 底部 显示 一个 指示百分比 的 计量器. 新的 百分比 从 标准输入 读取, 一行 一个 整数. 计量器 在收到 新的 百分比 时 更新 一次. 如果 标准输入 读得 字符串 "XXX", 那么 从 下一行 到 另一个 "XXX" 被 用作新的 提示符. 标准输入 读到 文件结束符(EOF) 时, gauge 便退出.
百分数 按 指定的 百分比 指示 进度, 如果 没有 指定, 默认是0.
退出时, 没有 文本 被写到 dialog 的 输出端. 这个组件 不接受 输入, 所以 退出状态 总是 OK.
--infobox text height width
info 对话框 基本上是 message 对话框. 可是 在 这种情况 下, dialog 在 显示完 信息 之后会 马上 退出. 退出的时候 并不清屏, 结果信息 会 停留在 屏幕上, 直到 稍后 调用 shell 脚本 清屏. 这在 你 需要 告诉 用户 一些 正在进行 的 操作 可能 需要 一些时间 来完成的 时候 很有用.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 返回 一个 ESC 退出状态.
--inputbox text height width [init]
input 对话框 在 你向 用户 提问 并把 输入的文本 作为 回答 时 很有用. 提供的 init 将作为 预置的 输入文本. 输入文本 的 时候, 退格键, 删除键 和 光标键 可以 用来 纠正 输入错误. 如果 输入的字符串 超出了 对话框的宽度, 输入区域 会 自动滚动.
退出时, 输入的字符串 会 被打印到 dialog 的 输出端.
--inputmenu text height width menu-height [ tag item ] .
inputmenu 对话框 和 普通的 menu 对话框 很相似. 它们 之间 只有一些差别:
1.
条目选项 不会 自动居中, 而是 左对齐.
2.
额外的按钮 (叫做 Rename) 表示 如果 按下的话 可以 修改 当前的条目.
3.
按下 Rename 按钮 可以 修改 当前的条目. dialog 会 输出 如下内容:
RENAMED
--menu text height width menu-height [ tag item ] ...
顾名思义, menu 对话框 以 菜单的形式 提供 一列条目 供 用户选择. 条目 按 给定的顺序 显示. 每个条目 由 一个 tag 字符串 和 一个 item 字符串 组成. tag 给 条目 一个名称 以便和 菜单中的 其他条目 区分开来. item 字符串 是对 条目 所代表的选项 的 简短描述. 用户 可以 通过 下列键在 菜单条目 之间 移动: 光标键, 作为 热键 的 tag 的 首字母, 或者 数字键 1-9. 菜单 一次 显示 menu-height 指定的 条目 个数, 如果 超过 这个 数目, 菜单 可以 卷动显示.
退出时, 所选择的 菜单选项的 标记(tag) 会 被打印到 dialog 的输出端. 如果 给出了 --help-button 选项, 用户 选择了 help 按钮 以后, 相应的 帮助文档 会 被打印出来.
--msgbox text height width
message 对话框 和 yes/no 对话框 很相似. 唯一的不同 就是 message 对话框 只有 一个 OK 按钮. 你 可以 用 这个 对话框 来 显示 你 喜欢的 任何信息. 阅读完 信息 之后, 用户可以 按下 ENTER 键, dialog 就会 退出, 并且 让 脚本 继续 操作.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--passwordbox text height width [init]
除了 不显示 用户输入的文本 之外, password 对话框 和 输入框 相似. 它在 提示 输入密码 或 其他 敏感信息 时 很有用. 注意, 如果 通过 "init" 传递了某些数据, 这些数据 可能会被 监听者 从 系统进程表 中 访问到, 而且 用户 会觉得 看不见的 默认密码 令人困惑. 因此, 极不鼓励 使用 "init" 参数. 如果 你 不介意 密码 的 话, 请参看 "--insecure" 选项.
退出时, 输入的字符串 会 被打印到 dialog 的输出端.
--radiolist text height width list-height [ tag item status fR]
..." radiolist 对话框 和 menu 对话框 相似. 唯一的 不同 是, 你 可以通过 设定 某一个 选项 的 status 为 on 来 指定 它 是否 为 当前的选择.
退出时, 被选择项 的 名称 会被写入到 dialog 的 输出端.
--tailbox file height width
在 对话框内 显示 一个 文件的 内容, 就象 执行 "tail -f" 命令 一样. 可以使用 VI风格的 h 和 l 或者 方向键 左右滚动 屏幕. 数字键 '0' 复位 滚屏状态.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--tailboxbg file height width
在 对话框内 显示 一个 文件的 内容, 作为 后台任务 执行, 就象 执行 "tail -f" 命令 一样. 可以使用 VI风格的 h 和 l 或者 方向键 左右滚动 屏幕. 数字键 '0' 复位 滚屏状态.
如果 屏幕上 同时有 其他组件 (--and-widget), dialog 会 特殊处理 后台任务. dialog 会 轮流 执行 同一个 进程里 所有的 tailboxbg 组件, 直到 这些 组件 被关闭 (如按下 "OK" 键). 可以 使用 tab键 在 屏幕的组件 之间 来回移动, 可以 单独 关闭其中的 组件, 比如, 按下了 ENTER 键。一旦 关闭了 非tailboxbg组件, 如果 给出过 --no-kill 选项, dialog 便在后台 fork 自己, 并且 打印出 它的 进程ID.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
注意: 旧版本的 dialog 会 立即fork 并 试图 单独 更新屏幕. 除了 性能 不足, 它 可能 无法工作. 一些 更旧的 脚本 在 轮转策略下可能 无法 正确工作.
--textbox file height width
text 文本框 允许你 在一个 dialog框中 显示 一个 文本文件的 内容. 就象一个 简单的 文本阅读器. 在 多数键盘 上, 用户 可以使用 光标, PGUP/PGDN键以及 HOME/END键 在 文本之间 移动. 如果在 对话框中 要显示的 文本行 过长, 可以 使用 LEFT/RIGHT键 水平滚动 文本. 你 还可以 使用 VI风格的 h, j, k, l 来替代 光标键, B或者N 来替代 PGUP/PGDN键. 向上和向下 滚动屏幕 可以 使用 VI风格的 'k' 和 'j', 或者 方向键. 向左和向右 滚动屏幕 可以 使用 VI风格的 更方便的是, 它 同样 支持 VI风格的 向前和向后 搜索功能.
退出时, 没有 文本 被 写到 dialog 的 输出端. 只提供 一个 "OK" 输入按钮, 但是 可能 返回 一个 ESC 退出状态.
--timebox text height [width hour minute second]
显示 一个 允许你 选择 小时, 分钟 和 秒 的 对话框. 如果 没有给出 时/分/秒 的 值, 或者 给出的值 是 负数, 将使用 当前日期. 可以用 上, 下, 左, 右 这几个 方向键 来 增大 或 减小 它们的 值. 使用 tab 或者 backtab (backspace?) 在 窗口之间 移动.
退出时, 按 hour:minute:second 的 格式 打印 结果.
--yesno text height width
显示 一个 高度为 height 行, 宽度为 width 列的 yes/no 对话框. 对话框内 显示 指定的 text 字符串. 如果 字符串 超过 一行的 宽度, 它会自动 在合适的 地方 分成 几行 显示. text 字符串 也可以 含有 子字符串 "\n" 或者 换行符 `\n' 来 明确地 换行. 这个对话框 在那些 要求 用户 回答 YES 或 NO 时 很有用. 对话框 含有 一个 Yes 和 一个 No 按钮, 用户可以 用 TAB 键 来回 选择.
退出时, 没有 文本 被 写到 dialog 的 输出端. 除了 "Yes" 和 "No" 返回值 (参看 DIAGNOSTICS) 外, 还 可能 返回 一个 ESC 退出状态.
用于 "Yes" 和 "No" 的 返回值 与 "OK" 和 "Cancel" 一致, 内部看 没有区别.
运行时配置 (RUN-TIME CONFIGURATION)
1.
键入 以下命令 以 创建 一个 样本配置文件:
"dialog --create-rc
2.
开始时, dialog 确定 使用 如下的设置:
a)
如果 设置了 环境变量 DIALOGRC, 其内容 决定 配置文件 的 名称.
b)
如果 没有 找到 (a) 中的 文件, 则使用 $HOME/.dialogrc 作为 配置文件.
c)
如果 没有 找到 (b) 中的 文件, 则 尝试使用 编译时 设置的 GLOBALRC 文件, 就是说, /etc/dialogrc.
d)
如果 没有 找到 (c) 中的 文件, 使用 编译的 默认配置.
3.
编辑 样本配置文件 并拷贝到 dialog 可以找到 的 地方, 如 上面 第二步 提到的 地方.
环境变量 (ENVIRONMENT)
DIALOGOPTS
定义 这个变量 以便在 每个组件中 应用 一些 公共选项. 大部分 公共选项在 处理 每个组件 前 被复位. 如果 在 这个变量 中 设置了 选项, 它们 将在复位后 传给 dialog. 就象在 --file 选项中, 双引号 和 反斜杆会 被解释.
--file 选项 不认为是 公共选项(所以 你 不能 把它 嵌在 这个环境变量 中).
DIALOGRC
定义 这个变量 以便 指定 配置文件的 名称.
DIALOG_CANCEL
DIALOG_ERROR
DIALOG_ESC
DIALOG_EXTRA
DIALOG_HELP
DIALOG_OK
定义 这些变量 以改变 Cancel (1), error (-1), ESC (255), Extra (3), Help (2), 或 OK (0) 的 返回值. 通常 shell脚本 不能 区分 -1 和 255.
DIALOG_TTY
设置 这个变量 为 1, 为 给出了 "--stdout" 选项 并 重定向 标准输出 的 老版本 dialog 提供 兼容.
文件 (FILES)
$HOME/.dialogrc
默认配置文件
示例 (EXAMPLES)
dialog 的 源代码 中 包含 一些 示例, 关于 如何使用 不同的 对话框选项以及 它们 的 样子. 到 源代码的 samples/ 目录 看看吧.
诊断 (DIAGNOSTICS)
退出状态 可以 被 环境变量 改变. 一般说来是:
0
按下 Yes或OK 按钮 退出.
1
按下 No或Cancel 按钮 退出.
2
按下了 Help 按钮.
3
按下了 Extra 按钮.
-1
dialog 内部 发生错误 或 按下 ESC 键 退出.