Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186019
  • 博文数量: 40
  • 博客积分: 2576
  • 博客等级: 少校
  • 技术积分: 494
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-14 17:19
文章分类

全部博文(40)

文章存档

2011年(21)

2010年(19)

我的朋友

分类: LINUX

2010-11-18 18:52:06

Shell dialog的使用
文章结构:
1. Dialog简介
   1.1. 作用简介
   1.2 安装包
2. Dialog的基本使用
   2.1 使用格式
   2.2 通用选项
   2.3 控件选项
   2.4 个别参数说明
3. Dialog的应用举例
Dialog的简介:
 1. 作用
   liunx下的dialog工具是一个可以和shell脚本配合使用的文本届面下的创建对话框的工具。
这个对话框使用命令行参数,以确定产生哪些类型的窗口部件。
一个部件是对话框包的窗口元素类型的术语。
每个对话框部件提供的输出有两种形式
一种:使用STDERR
另一种:使用退出状态码,OK”0,”Cancle”和NO”1.
2.安装包
默认情况下在linux中是没有dialog这个程序的,所以一般得要手动安装:
 在安装盘上的Server下面用ls |grep dialog
        dialog-1.0.20051107-1.2.2.i386.rpm
然后rpm -ivh dialog-1.0.20051107-1.2.2.i386.rpm安装下就可以了,当然你也可以到网上下载,可以到上找到。
  下面测试一下:
         
基本使用:
1. 使用格式:
        dialog --clear
       dialog --create-rc file
 dialog支援动态规划,这个功能会产生一个样本,我对这个的理解就是当前dialog的默认使用的环境。
       dialog --print-maxsize
       这个参数可以查看--boxtype中的选项的参数使用
       dialog   --common-options   --boxtype  “text” Height  Width 
       说明:这里的--common-options可以有多个,但--boxtype 只能有一个。
       第一个--common-options主要是设置dialog的标题,位置,背景和颜色等,具体的参数说明请参考下面的内容。
      第二个 ---boxtype 这个是主要的参数,这个就是我们想要的东西了,指定我们想要的boxbox里面的内容,以及怎么显示和让用户选择这些内容。
 2. 通用参数
 这里列举点常用的,具体的还很多可以用man dialog查看
Man dialog |col -b >file
sed -n '/Common/,/Box/p' file|sed -n '/^ *\-\-\w*/p'|wc -l
这样可以看到有51common-options
- -backtitle  backtitle 指定backtitle字符串显示在背景下,在屏幕的顶部。
- -begin  y  x       指定的位置在屏幕上的上一个对话框的左上角
- -colors            解读嵌入式“\ Z”的对话框中的文本序列由下面的字符 0-7, b  B, u, U, ect,恢复正常的设置使用“\Zn”
- -defaultno         使的是默认值 yes/no,使用no
- -default-item string设置在一份清单,表格或菜单中的默认项目。通常在框中的第一项是默认
- -insecure        输入部件的密码时,明文显示不安全,使用星号来代表每个字符,这样安全点
- -nocancel       设置在输入框,菜单,和复选框中,禁止选cancel”
- -nook          设置在输入框,菜单,和复选框中,禁止选ok”
- -no-shadow      禁止阴影出现在每个对话框的底部
- -ok-label  string 覆盖使用OK”按钮的标签
- -timeout  secs   超时(返回的错误代码),如果用户在指定的时间内没有给出相应
- -title  title      指定将在对话框的上方显示的标题字符串
--clear           用来完成清屏操作
 3. 控件选项(boxtype
这个选项也有很多:
 sed -n '/Box Options/,/Obsolete Options/p' file|sed -n '/^ *\-\-\w*/p'|wc -l
可以看到有18个。
类型    用于创建类型的选项       含   义
--calendar    提供了一个日历,让你可以选择日期
--checklist     允许你显示一个选项列表,每个选项都可以被单独的选择  (复选框)
--from       允许您建立一个带标签的文本字段,并要求填写
--fselect      提供一个路径,让你选择浏览的文件
--gauge    显示一个表,呈现出完成的百分比,就是显示出进度。
--infobox    显示消息后,(没有等待响应)对话框立刻返回,但不清除屏幕  (信息框)
--inputbox     让用户输入文本  (输入框  )
--inputmenu   提供一个可供用户编辑的菜单 (可编辑的菜单框)
--menu       显示一个列表供用户选择   (菜单框)
--msgbox    显示一条消息,并要求用户选择一个确定按钮  (消息框  )
--pause      显示一个表格用来显示一个指定的暂停期的状态
--passwordbox   显示一个输入框,它隐藏文本
--passwordfrom  显示一个来源于标签并且隐藏的文本字段
--radiolist      提供一个菜单项目组,只有一个项目,可以选择  (单选框 )
--tailbox      在一个滚动窗口文件中使用tail命令来显示文本
--tailboxbg    跟tailbox类似,但是在background模式下操作
--textbox    在带有滚动条的文本框中显示文件的内容  (文本框)
--timebox   提供一个窗口,选择小时,分钟,秒
--yesno      提供一个带有yes和no按钮的简单信息框  (是/否框)
每个选项的的参数情况:dialog --print-max-size
Dialog的实际举例:
  说明:前面在简介中也介绍了dialog提供的输出有两种形式:
 一种:使用STDERR,这个在赋值的时候常用。
 另一种:使用退出状态码,OK”0,”Cancle”和NO”1.
 可以用name=$(dialog ~~~~~)dialog中输入的赋值给name变量。
下面举例说明:
 --yesno
  Dialog  --title this is test --yesno
这时候选yes的话echo $? 就为0,选no的话就为1
Dialog --defaultno --yesno test’ 3 20
dialog  - -backtitle  “The  first  dialog  box ”  - -title  “hello”  - -yesno  “Is this  your  first dialog box?”  7 25
Inputbox
Tao=dialog --title 'test' --inputbox 'input you name:' 10 20
这个是一个错的,这时候回车会说什么都不显示,因为其将显示的东西都赋给tao这个变量了;必须将标准错误和标准输出都重定向到显示器上:
tao=$(dialog --title 'test' --inputbox 'input you name:' 10 20 2>&1>/dev/tty)
 也可这样:
dialog --title 'test' --inputbox 'input you name:' 10 20 2>tao
直接将输入的字符存在文件里tao里,不过这个还得对文件进行一次操作。
这时候echo $tao 
--menu
这个比较复杂,这里再看下其参数:
--menu              ...
#dialog --title "two girls" --menu 'who is your wife' 10 30 5 1 "the little girl" 2 "the lady" 3 "neither"
tao=$(dialog --title "two girls" --menu 'who is your wife' 20 30 5 1 "the little girl" 2 "the lady" 3 "neither" 2>&1>/dev/tty)
高级:
#tao=the girl” the lady” neigther”)
# dialog --menu "choose!" 20 30 6 "${tao[@]"
--gauge
dialog --title 'test --guage' --guage "copy file。。。" 6 20 5
--form
--form                    ...
#dialog --title "ip addr" --form "Please input" 12 40 4  \
  "ip" 1  1 "" 1  15  15  0  \
  "mask:" 2  1 "" 2  15  15  0  \
  "gratway:" 3  1 "" 3  15  15  0  
#tao=$(dialog --title "ip addr" --form "Please input:" 12 40 4    "ip:" 1  1 "" 1  15  15  0    "mask:" 2  1 "" 2  15  15  0    "greyway:" 3  1 "" 3  15  15  0 2>&1>/dev/tty)
这个也是对tao变量进行赋值:
#Echo $tao
122222 22222 3333333
--radiolist
dialog --title "RadioList Example" --radiolist "Radio List" 20 60 4 tag1 "item1" on tag2 "item2" off  tag3 "item3" on tag4 "item4" off  
#tao=$(dialog --title "RadioList Example"      --radiolist "Radio List" 10 60 4 tag1 "item1" on tag2 "item2" off      tag3 "item3" on tag4 "item4" off  2>&1>/dev/tty)
#Echo $tao
其他的参数我感觉也不怎么用,关键是我目前也就学这么多,估计也够用了;等以后用到更实用的再慢慢添加吧!!
                                           -------2010/11/19
做的图片显示不出来~~~郁闷~~哪位大神路过帮忙说下图片如何加载上~~~我是从word上cp上来的~~



阅读(2121) | 评论(1) | 转发(0) |
0

上一篇:linux mail 用法

下一篇:grep的用法大全

给主人留下些什么吧!~~

chinaunix网友2010-11-19 15:23:27

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com