dialog图形工具
时间:2008-07-30 来源:sss0213
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
参考网站
另外我自己写的一个小程序,幽你一默:
#!/bin/sh
Q_NAME=`whoami`
dialog --yesno "$Q_NAME,你是猪吗?" 15 30
if [ 0 != $? ]
then
dialog --msgbox "不对,不对!$Q_NAME是个猪!" 12 25
dialog --clear
exit 0
fi
dialog --msgbox "Good Choice!" 12 25
sleep 2
dialog --clear
exit 0