Linux dialog详解(图形化shell)

网友投稿 822 2023-02-15

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux dialog详解(图形化shell)

liunx 下的dialog 工具是一个可以和shell脚本配合使用的文本界面下的创建对话框的工具。每个对话框提供的输出有两种形式:1.  将所有输出到stderr 输出,不显示到屏幕。2.  使用退出状态码,“OK”为0,“NO”为1,"ESC"为255

窗体类型:

常见的对话框控件选项有:

[ --calendar ]     提供了一个日历,让你可以选择日期

[ --checklist ]    允许你显示一个选项列表,每个选项都可以被单独的选择  (复选框)

[ --from ]           允许您建立一个带标签的文本字段,并要求填写

[ --fselect ]    提供一个路径,让你选择浏览的文件

[ --gauge ]    显示一个表,呈现出完成的百分比,就是显示出进度。

[ --infobox ]     显示消息后,(没有等待响应)对话框立刻返回,但不清除屏幕  (信息框)

[ --inputbox ]   让用户输入文本  (输入框  )

[ --inputmenu ]    提供一个可供用户编辑的菜单  (可编辑的菜单框)

[ --menu ]       显示一个列表供用户选择   (菜单框)

[ --msgbox ]   显示一条消息,并要求用户选择一个确定按钮  (消息框  )

[ --pause ]      显示一个表格用来显示一个指定的暂停期的状态

[ --passwordbox ]    显示一个输入框,它隐藏文本

[ --passwordfrom ]  显示一个来源于标签并且隐藏的文本字段

[ --radiolist ]      提供一个菜单项目组,只有一个项目,可以选择  (单选框 )

[ --tailbox ]        在一个滚动窗口文件中使用tail命令来显示文本

[ --tailboxbg]     跟tailbox类似,但是在background模式下操作

[ --textbox ]       在带有滚动条的文本框中显示文件的内容  (文本框)

[ --timebox ]      提供一个窗口,选择小时,分钟,秒

[ --yesno ]     提供一个带有yes和no按钮的简单信息框  (是/否框)

如果没有此包请先安装yum -y install dialog

命令示例:1.消息框 格式:dialog  - -msgbox  text   height  width

例子:

3.输入框

格式:dialog --inputbox text height width例子:

1
2
3
# dialog --title "Input your name"  \
--inputbox"Please input your name:"1030 2>/tmp/name.txt  
#(这里的2>是将错误信息输出重定向到了/tmp/name.txt文件中)

5.文本框

格式:dialog --textbox file height width

例子:

1
#dialog --title "The fstab" --textbox /etc/fstab  17 40

10.进度框架

格式:dialog --gauge text height width  []

#编辑到脚本中编辑一个gauge.sh 的脚本

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash  
# vim gauge.sh
declare-iPERCENT=0
(
       forIin/etc/*;do
               if[$PERCENT-le100];then
                       cp-r$I/tmp/test2>/dev/null
                       echo"XXX"
                       echo"Copy the file $I ..."
                       echo"XXX"
                       echo$PERCENT 
               fi
       let PERCENT+=1
       sleep0.1
       done
)|dialog--title"coping"--gauge"starting to copy files..."6500

#bash  gauge.sh  (执行脚本的时候注意修改权限)

11.from框架(表单)

格式:dialog --form text height width formheight [ label y x item y x flen ilen ] ...

其中

flen 表示field length,定义了:选定字段中显示的长度

ilen 表示 input-length, 定义了:在外地输入的数据允许的长度

使用up/down(或ctrl/ N,ctrl/ P)在使用领域之间移动。使用tab键在窗口之间切换。

例子:

# dialog --title "Add a user" --form "Please input the infomation of new user:" 12 40 4  \

"Username:" 1  1 "" 1  15  15  0  \

"Full name:" 2  1 "" 2  15  15  0  \

"Home Dir:" 3  1 "" 3  15  15  0  \

"Shell:"    4   1 "" 4  15  15  0

综合应用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
yesno(){
dialog--title"First screen"--backtitle"Test Program"--clear--yesno\
"Start this test program or not ? \nThis decesion have to make by you. "1651
# yes is 0, no is 1 , esc is 255
result=$?
if[$result-eq1];then
exit1;
elif[$result-eq255];then
exit255;
fi
username
}
username(){
cat/dev/null>/tmp/test.username
dialog--title"Second screen"--backtitle"Test Program"--clear--inputbox\
"Please input your username (default: hello) "1651"hello"2>/tmp/test.username
result=$?
if[$result-eq1];then
yesno
elif[$result-eq255];then
exit255;
fi
password
}
password(){
cat/dev/null>/tmp/test.password
dialog--insecure--title"Third screen"--backtitle"Test Program"--clear--passwordbox\
"Please input your password (default: 123456) "1651"123456"2>/tmp/test.password
result=$?
if[$result-eq1];then
username
elif[$result-eq255];then
exit255;
fi
occupation
}
occupation(){
cat/dev/null>/tmp/test.occupation
dialog--title"Forth screen"--backtitle"Test Program"--clear--menu\
"Please choose your occupation: (default: IT)"16513\
IT"The worst occupation"\
CEO"The best occupation"\
Teacher"Not the best or worst"2>/tmp/test.occupation
result=$?
if[$result-eq1];then
password
elif[$result-eq255];then
exit255;
fi
finish
}
finish(){
dialog--title"Fifth screen"--backtitle"Test Program"--clear--msgbox\
"Congratulations! The test program has finished!\n Username: $(cat /tmp/test.username)\n Password: $(cat /tmp/test.password)\n Occupation: $(cat /tmp/test.occupation)"1651
result=$?
if[$result-eq1];then
occupation
elif[$result-eq255];then
exit255;
fi
}
yesno
上一篇:运维工程师事件(运维工程师遇到过哪些故障)
下一篇:it运维任职要求(运维工程师任职要求)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~