AIOps 一场颠覆传统运维的盛筵
822
2023-02-15
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 |
发表评论
暂时没有评论,来抢沙发吧~