名称
dialog - 由shell显示的对话框。
概要
dialog --clear
dialog --create-rc file
dialog --print-maxsize
dialog common-options box-options
描述
dialog 是一个可以让你陈列各种问题或者使用一个shell script的对话框来显示信息的程序。
以下对话框的类型已经实现(尽管不是所有都被编译进dialog)
calendar, checklist, form, fselect, gauge, infobox, inputbox,
inputmenu, menu, msgbox (message), password, radiolist, tailbox,
tailboxbg, textbox, timebox, and yesno (yes/no)。
你可以在一个脚本中放置一个或多个对话框
- 使用 �Cand-widget 表示强制Dialog处理到下一个dialog直到按下ESC键取消。
- 简单地加一个标志给下一个对话框,组合成一条链。当一个会话的返回值为非0,比如,
Cancel或者No(查看诊断),会话就会停止。
一些部件,比如,清单,会写文本到会话的输出。
一般情况下是标准错误,但是这里有一些选项可以改变它: --output-fd,--stderr 和 --stdout。
在按下Cancel(或ESC)时不会写入文本;这种情况下会话会立即退出。
选项
所有的选项以"--"开头。
单独的”--“符号作为跳脱符(ESCAPE)使用,也就是说,命令行上的下一个标记不作为一个选项。
dialog --title -- --Not an option
--file 选项告诉dialog从文件中读取参数作为它的值。
dialog --file parameterfile
不被双引号所引用的空白部分是无效的(使用反斜线来引用单个字符)。结果会被插入命令行并替代
--file 选项和它的值。命令行将从那个位置解释。
普通选项
--aspect ratio
当你使用自动调整大小的时候这个参数给你控制框的大小(范例 0的高和宽)。
它描述宽/高,默认值为9,意思是1行有9个字大小。
--backtitle backtitle
指定显示在背景顶端的标题。
--beep
每次刷新屏幕时发出声音警告。
--beep-after
输入被中断时发出声音警报。例如ctrl/C。
--begin y x
指定对话框左上角在屏幕上的坐标。
--cancel-label string
为“Cancel”按钮指定标签。
--clear
退出时清屏。这个参数只能单独使用,不能和别的参数联合使用。
--colors
解释内含在对话框的”\Z”的顺序属性。他告诉对话框设置颜色或者视频属性:
0到7是ANSI码在curses中分别指定为:黑色,红色,绿色,***,蓝色,紫红色,蓝绿色和白色。
粗体用’b’设置,重设用‘B’。背面用’r’设置,重设用’R’。下划线用’u’设置,
重设用’U’。所做出的改动将会累积起来。例如,”\Zb\Z1’”表示文本显示红色。
恢复正常的设置用”\Zn”。
--cr-wrap
解释对话框内的文本换行相当于一个新行。另外。dialog只会控制文本适应对话框。
即使你可以控制一行突破这个规则,dialog也会自动调整所有在对话框内的文本
使他们与对话框的宽度一样。不用cr-wrap,文本的版面会排列成脚本的原始规则。
参看 --no-collapse 和 --trim 选项。
--create-rc file
当对话框支持运行时配置,这个参数可用来一个示例的配置文件并指定这个文件。
--defaultno
设置yes/no对话框的默认值为NO。同样的,可以使提供OK和Cancel按钮的组件默认按钮
为Cancel。如果给出的 --nocancel 参数覆盖了这个参数,默认的按钮就是YES(
内部和OK按钮一样)
--default-item string
设置menu对话框中checklist的默认选项,通常是第一项。
--exit-label string
为“EXIT”按钮指定???签。
--extra-button
在OK和Cancel按钮之间添加一个按钮。
--extra-label string
为添加的按钮“Extra”指定标签。注意:在inputmenu组件中,默认是Rename。
--help
打印帮助信息到标准输出。如果没有给出选项,帮助信息就会被打印出来。
--help-button
在checklist,radiolist和menu的对话框OK和Cancel按钮之后显示一个帮助按钮。
如果同时也给出了 -―item-help 选项,退出时返回值和”OK”按钮的返回值一样,
而且 --item-help 的内容会被写到会话的输出。另外,返回状态显示“Help”按钮被按下,
并且没有信息被打印出来。
--help-label string
为“Help”按钮指定标签。
--help-status
如果选择了 --help-button 选项,在 --item-help 的帮助信息之后会显示checklist,
radiolist或者form的信息。这个选项可以在处理完help请求后重建checklist的状态。
--ignore
忽略dialog不认可的选项。众所周知的一个是"--icon"选项,任何情况下都会被忽略,
但这是一个相对其他实现而言兼容性较好的选择。
--input-fd fd
从给定的文件描述符中读取键盘输入。大部分的dialog脚本从标准输入读取,但是gauge
组件从管道读取(那通常是标准输入)。当dialog试着重新打开终端时一些配置不能严格执行。
如果你的脚本必须工作在那种类型的环境中,可以使用这个选项。
--insecure
输入密码时回显星号(×),将使得passwd组件更友好但较不安全。
--item-help
在屏幕底部为当前选择的的项目增加一列,用以解释说明checklist和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 选项。
--no-kill
告诉dialog放置一个tailboxbg对话框在后台,同时打印它的进程ID号到dialog的输出。
做为后台进程运行时,SIGHUP是被禁止的。
--no-label string
为“NO”按钮指定标签。
--no-shadow
禁止对话框投向右下方的阴影。
--ok-label string
为“OK”按钮指定标签。
--output-fd fd
直接输出到给定的文件描述符。多数dialog脚本写到标准输出,但是错误信息可能也被
输出到那里,这取决于你的脚本。
--print-maxsize
打印对话框最大的大小(也就是屏幕大小)到标准输出。
这个参数要单独使用,不能和别的参数一起使用。
--print-size
打印每一个对话框的大小到标准错输出。
--print-version
打印dialog的版本到标准输出。这个参数要单独使用,不能和别的参数一起使用。
--separate-output
对于chicklist组件,输出结果一次输出一行,没有限额.这一便利的分离可以被别的程序使用。
--separator string
--separate-widget string
指定一个分隔符,分离dialog中每个组件的输出。它可以用来简单地分析一个dialog
中几个组件的??果。如果没有给出这个选项,默认的分隔符是一个tab符号。
--shadow
在每一个对话框的右下方显示阴影。
--single-quoted
对于checklist的输出,象 --item-help 的帮助文本一样,如果需要,就使用单引号
(如果不需要就用引号)如果没有设置这个选项,dialog使用双引号来引用每个选项。
这需要临时使用反斜杆以便输出对shell脚本有用。
--size-err
在试图使用对话框之前检查对话框形成后的大小。如果大于屏幕就会打印检查出来的大小。
(这个参数已经废弃了,所有被调用的新窗口都会被监测。)
--sleep secs
在处理完一个对话框后静止(延迟)的时间(秒)。
--stderr
直接输出到标准错误。自从curses规则地将屏幕更新写入标准输出以来,这就是默认的。
--stdout
直接输出到标准输出。自从curses规则地将屏幕更新写入标准输出以来,就提供这个选项
为Xdialog提供兼容,但是不推荐在可移植的脚本中使用。如果使用这个选项,dialog
为了显示,会试着重新打开终端。这依赖于你的平台和环境,可能会失败。
--tab-correct
转换每个tab字符为一个或多个空格。另外,tab会根据curses库的说明进行渲染。
--tab-len n
如果给出了 --tab-correct 选项,指定一个tab符号为多少个空格。默认是8。
--timeout secs
如果在指定的时间内没有用户应答则超时退出(以错误规则退出)。如果后台使用了
--tailboxbg选项,它就会失效。指定为0秒时将被忽略。
--title title
指定显示在对话框顶部的标题。
--trim
除去主要的空白部分,从文字上新的一行来调整并显示消息正文。
参看 --cr-wrap 和 --no-collapse 选项。
--version
等同于”―print-version”。
--visit-items
修改checklist,radiobox,menubox和inputmenu的tab键遍历功能,使得列表中的
选项可以用tab键访问。这是一个视觉上的帮助,光标的位置可以帮助一些用户。
--yes-label string
为“YES”按钮指定字符串。
对话框选项
所有的对话框至少有三个参数:
text
对话框的标题或内容。
height
对话框的高度。
width
对话框的宽度。
其它参数依赖于dialog框类型。
--calendar text height width day month year
日历框在单独的可调整的窗口中显示 月/日/年。如果没有给出 日/月/年 的值,或所给
的值为负数,将会使用当前日期的相应值代替。可以用上、下、左、右这几个方向键来增大
或减小它们的值。用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 flen ilen ] . . .
form对话框显示一个由标签(label)和域(field)组成的表单,而这些标签和域被??????在
给定坐标的可滚动窗口上。域的高度(the field length)flen和输入高度(input-length)
ilen表明了域的最大长度。前者定义了显示被选择的域高度,后者定义了域中输入数据的长度。如果flen为0,对应的域就不能更改。如果ilen为0,则被设置为flen的值。
使用上、下箭头(或者control/N,control/P)在区域之间移动,tab键在窗口之间移动。
退出时,表单域的内容被写入到dialog的输出,每个域由新的一行分隔。只用于输入的区域
(flen为0)不会被输出。
--fselect filepath height width
文件选择对话框(file-selection dialog)显示一个文本条目窗口,上面的两个
窗口标着目录名和文件名,你可以输入一个文件名(或目录)。
文件路径可以是目录窗口显示的路径和文件,文本条目窗口包含了预选的文件名。
使用tab键或箭头键可以在窗口之间移动。在目录窗口或文件窗口内使用up/down箭头键
在列表中选择。空格键复制当前的选择到文本条目窗口。
键入一些可打印的字符可以在文本条目窗口中选择焦点,键入字符可以滚动目录窗口和
文件窗口到最靠近的匹配。
回车键或”OK“按钮接受文本条目窗口中当前的结果并退出。
退出时,文本条目窗口的内容被写入到dialog的输出。
--gauge text height width [percent]
gauge box在对话框底部显示一个指示百分比的计量器。新的百分比从标准输入中读取,
一行便是一个整体。计量器在达到新的百分比时更新一次。标准输入读取字符串”XXX“,然后
跟在另一个的”XXX“后面的行被作为新的提示符。文件结束符(EOF)到达标准输入时,gauge便退?
觥?
百分数按指定的百分比指示进度。如果没有指定,默认是0。
退出时,没有文本会被写入dialog的输出。这个组件不接受输入,所以退出状态总是OK。
--infobox text height width
infobox基本上是一个信息对话框。可是在这种情况下,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 <tag> <item>
--menu text height width menu-height [ tag item ] . . .
顾名思义,对话框以菜单的形式提供一列条目供用户选择。条目按给定的顺序显示。
每个条目由一个tag字符串和一个item字符串组成。tag给条目一个名称以便和菜单中的
其他条目区分开来。item字符串是对条目所代表的选项的简短描述。用户可以通过按下
光标键在菜单条目之间移动,tag的首字母可以作为hot-key,或者数字键1-9。
菜单一次显示 menu-height 指定的条目个数,如果超过了,可以通过滚动菜单来显示。
退出时,所选择的菜单选项的标记会被打印到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 ] . . .
radiolist对话框和menu对话框相似。唯一的不同是,你可以通过设定某一个选项的
status值为on来指定它是否为当前选择的。
退出时,被选择那一项的名称会被写入dialog的输出。
--tailbox file height width
在对话框内显示一个文件的内容,就象执行命令"tail -f"一样。左右滚动屏幕可以使用
VI风格的h,l或者方向键左右滚动屏幕。数字键”0“复原。
退出时,没有文本会被写入dialog的输出。只提供一个OK按钮作为输入,但是可能返回一个
ESC的退出状态。
--tailboxbg file height width
在dialog box内显示指定文件的内容,作为后台任务执行,就象”tail -f
&“命令。
左右方向的滚屏可以使用VI风格的‘h’和‘l’,或者方向键。数字”0“复位。
如果屏幕上同时有其他组件(--and-widget),dialog会特别对待后台任务。
dialog会轮询更新,同时执行所有的tailboxbg组件,直到这些组件被关闭(比如,”OK“)。
可以使用tab键在屏幕的组件之间来回移动,可以单独的关闭其中一个组件,比如,按下ENTER键。
一旦非tailboxbg组件被关闭,如果给出了--no-kill选项,dialog便fork自身的一个拷贝到后台,
然后打印出它的进程ID。
退出时,没有文本被写到dialog的输出。只提供一个EXIT按钮作为输入,可能返回一个ESC
的退出状态。
注意:旧版本的dialog会立即fork并试图部分地更新屏幕。此外,它存在不足,可能无法工作。
一些更旧的脚本对于polled scheme可能不能正确地执行。
--textbox file height width
文本框允许你在一个dialog框中显示一个文本文件的内容。就象一个简单的文本阅读器。
在多数键盘上,用户可以使用光标、PGUP/PGDN键以及HOME/END键在文本之间移动。
如果在回话框中要显示的文本行过长,可以使用LEFT/RIGHT键水平滚动文本。
你还可以使用VI风格的h,j,k,l来替代光标键,B或者N来替代PGUP/PGDN键。
向上和向下滚动屏幕可以使用VI风格的‘k’和‘j’,或者方向键。向左和向右滚动屏幕可以
使用VI风格的‘h’和‘l’,或者方向键。‘0’(数字0)复原左右方向的滚屏。
更方便的是,它同样支持VI风格的向前和向后搜索功能。
退出时,不会输出文本到dialog的输出。只提供一个“EXIT”输入按钮,但是可能会返回
ESC退出状态。
--timebox text height [width hour minute second]
显示一个允许你选择小时,分钟和秒的对话框。如果没有给出时/分/秒的值,或者
给出的值是负数,将使用当前的日期。可以用上,下,左,右这几个方向键来增大或减小
它们的值。使用tab或者backtab在窗口之间移动。
退出时,结果将会以 时:分:秒 的格式打印出来。
--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的规则,内部没有区别。
运行配置
1.键入以下命令以创建一个样本配置文件:
"dialog --create-rc <file>"
2.开始时,dialog确定使用如下的设置:
a) 如果设置了环境变量DIALOGRC,它决定了配置文件的名称。
b) 如果没有找到(a)中的文件,则使用$HOME/.dialogrc作为配置文件。
c)
如果没有找到(b)中的文件,在编译的时候尝试使用GLOBALRC文件,比如/etc/dialogrc。
d) 如果没有找到(c)中的文件,使用默认配置进行编译。
3. 编辑样本配置文件并拷贝到dialog可以找到的地方,比如,上面的第二步。
环境
DIALOGOPTS
定义这个变量以便在每个组件中应用一些common options。大部分的common options
在处理每个组件前被重置。如果在这个变量中设置了选项,它们将被应用到dialog的
状态被重置之前。就象在 --file 选项中,双引号和反斜杆会被解释。
--file 选项不被作为一个 common option(所以你不能在这个环境变量中插入它)。
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,为给出了--std-out选项并重定向标准输出的老版本dialog提供兼容。
文件
$HOME/.dialogrc 默认配置文件
实例
dialog的源代码中包含一些关于如何使用不同的box options和它们看上去如何的实例。
进入源代码的samples目录看看。
诊断
无效的退出状态由环境变量控制。
它们通常是:
0 按下Yes或OK按钮退出。
1 按下NO或Cancel退出。
2 按下了Help按钮。
3 按下了外加的按钮。