veket官方网站论坛

veket

 找回密码
 要注册
搜索
查看: 5453|回复: 3

Linux DIALOG

[复制链接]
发表于 2009-10-23 02:06 | 显示全部楼层 |阅读模式
dialog是个shell scripts用的,事实上当您下载Linux Kernel时,里面有个
   
  scripts/lxdialog目录,其实那就是dialog原始码,只是Linux kernel为了避
   
  免与原有dialog相冲突,将名字修改为lxdialog。当您使用"make menuconfig"
   
  时,便是在用dialog这套工具。另外,Slackware的安装程序,事实上也是用
   
  dialog这套工具来做界面的。  

   
  您可以利用shell script来呼叫dialog,也可以利用perl来呼叫它,用以提供
   
  较友善的使用者界面。  

   
  利用dialog这个工具,您可以在不需要写"艰深"的ncurses的程序的状况下,使
   
  用Shell Script,完成很复杂的操作界面,大大减少产品开发时间。  


   
  您可以用"man dialog"来查它的使用方法。这里做一些dialog的使用及示范。  

   
  dialog --clear

   
  整个萤幕会清除後离开  

   
  dialog --create-rc file

   
  dialog支援动态规划,这个功能会产生一个样本。  

   
  dialog  [  --title  title  ]  [  --backtitle backtitle ]
   
  [--clear ] [ --separate-output ] box-options

   
  --title title

   
  对话盒上的标题文字

   
  --backtitle backtitle

   
  桌面背景的标题  

   
  box-options

   
  dialog目前提供了yes/no  box,  menu  box, input box, message box, text
   
  box, info box, checklist box, radiolist box, 及gauge box共九种widget.

   
  Exit Status

   
  如果按下Yes或OK按键,则会返回0。No或Cancel会返回1。如果按下ESC或发生
   
  错误,则会返回-1。
 楼主| 发表于 2009-10-23 02:07 | 显示全部楼层
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 键 退出.
 楼主| 发表于 2009-10-23 02:11 | 显示全部楼层

Dialog

dialog今天看到一本不错的书,linux程序设计,当看到shell编程的时候,感觉的自己过去编写的那个太浪费时间了,其实我们完全可以用很短时间就可以完成一些简单的任务,可是,只是有的时候我们不知道好的方法和指导,那样让我们走很多的弯路的!
基本用法:
在结束讨论shell脚本程序之前,我们还将介绍一个特性,尽管严格来说它并不是shell的一部分,但是通常情况下它仅仅在shell程序设计中有用,所以我们将在这里讨论它。
如果你知道你的脚本程序只需要运行在Linux控制台下,则可以使用dialog工具命令,它以一种非常简洁的方式润色你的脚本程序。这个命令使用基于文本的图形和色彩,但它的确提供了友好的面向图形的解决方案。
dialog工具的整体思想非常简单:一个带有各种各样参数和选项的单个程序,它允许你显示不同类型的图形框,范围涵盖从最简单的Yes/No框到输入框,甚至菜单选项。当用户执行某种类型的输入后,这个工具一般就会回,返回结果可以通过退出状态或通过标准错误流来获取用户输入的方式来获得。
  在详细介绍它之前,先来看一个非常简单的使用dialog的例子。我们可以在命令行上直接使用dialog,这对于程序的原型设计很有用。现在让我们创建一个简单的消息框来显示传统意义上的第一个程序:
出了可以创建的对话框的主要类型。

类    型    用于创建类型的选项        含    义
复选框      --checklist             允许你显示一个选项列表,每个选项都可以被单独的选择

信息框          --infobox               在显示消息后,对话框将立刻返回,但并不清除屏幕

输入框      --inputbox              允许用户输入文本

菜单框      --menu                  允许用户选择列表中的一项

消息框      --msgbox           向用户显示一条消息,同时显示一个OK按钮,用户可以通过选择该按钮继续操作

单选框      --radiolist             允许用户选择列表中的一个选项

文本框      --textbox               允许在带有滚动条的文本框中显示文件的内容

是/否框     --yesno                 允许你提问,用户可以选择yes或no

还有一些其他的dialog框类型(例如,进度框和密码框)可用。如果想了解更多不常用的dialog类型,你可以像往常一样参考在线使用手册。

如果想获得任何类型的允许文本输入或进行选择的对话框的输出,你必须捕获标准错误流,通常是把它指向某个临时文件以便后续处理。要想获得Yes/No对话框的输出结果,只需查看它的退出码,与所有设计良好的程序一样,返回0表示成功(例如,选择yes选项),1表示失败。

所有的dialog类型都有各种各样的用于控制的额外参数,比如控制显示的对话框的大小和形状。我们首先列出每种类型需要的参数,然后在命令行上演示其中一部分参数的用法,最后,我们编写一个简单的程序来把几种对话框结合起来。

  对话框类型                                  参    数
--checklist                text height width list-height [tag text status]...
--infobox                  text height width
--inputbox                 text height width [initial string]
--menu                     text height width menu-height [tag item]...
--msgbox                   text height width
--radiolist                text height width list-height [tag text status]...
--textbox                  filename height width
--yesno                    text height width
除此之外,所有的dialog类型都有几个相同的参数选项。在此我们不一一列出,只介绍两个选项:--title和--clear,前者允许你指定对话框的标题,后者用来完成清屏操作。与以前一样,请查询使用手册来了解完整的选项列表。

如果您知道您的脚本只需要运行在Linux控制台下,则可以使用dialog工具命令,试了一下感觉还不错.
  一个简单的例子:
  dialog --msgbox "Hello World" 9 18
发表于 2014-3-8 19:53 | 显示全部楼层
很有用,但目前我不会用。
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛 ( 粤ICP备 11052856 )

GMT+8, 2024-4-30 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表