dialog窗口编程的入门使用
dialog:能够动态生成一个文本窗口,并且这个窗口支持众多的窗口元素。
dialog: 命令
窗口元素:
文本框
单选框
复选框
进度条
dialog所能够提供给我们的窗体,选择完成以后(敲了回车之后),其相关信息没有输出到标准输出,而是输出到错误输出
# yum -y install dialog # dialog --print-maxsize #这个只是自己的值,换个人大小可能就不一样了,所以以后设置的时候尽可能不要把窗口设置的过大 MaxSize: 35, 134 # dialog --backtitle "First Window" --title "Create User" --yesno "HostName." 10 30
在是选项按下回车后
# echo $? 0
如果在否选项按下回车后
# echo $? 1 # dialog --backtitle "First Window" --title "Create User" --inputbox "HostName." 10 30 #加上--inputbox选项后,就可以输入信息了
还没有按回车
# Hostname=`dialog --stdout --backtitle "First Window" --title "Create User" --inputbox "Hostname." 10 30`
这次就不在后面显示了
# echo $Hostname hostname
注:先把所有的输出定向到标准输出(--stdout)上来,再使用一个变量获取命令的执行结果。既然这样,我们就能够在脚本中调用了
如何在脚本中使用dialog
例:创建用户
# vim adduser.sh #!/bin/bash # Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30` RETVAL=$? if [ $RETVAL -eq 0 -a -n $Username ]; then #判定$?,如果其值等于0,且用户名不为空 useradd $Usernameecho $Username | passwd --stdin $Username fi # bash -n adduser.sh # bash adduser.sh
# vim adduser.sh if [ $RETVAL -eq 0 -a -n "$Username" ]; then #把$Username用引号引起来
为了不让其显示这些信息,而且如果用户存在,怎么办?用户存在了,你一上来就创建用户也不行
# vim adduser.sh
if [ $RETVAL -eq 0 -a -n "$Username" ] && ! id $Username &> /dev/null; then
# bash adduser.sh
没有任何信息返回,应该是成功了。但是这样也不知道是创建成功还是由于用户以存在而没有创建成功,则再改一下
# vim adduser.sh #!/bin/bash # Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30` RETVAL=$? if [ $RETVAL -eq 0 -a -n "$Username" ]; then if ! id $Username &> /dev/null; thenuseradd $Usernameecho $Username | passwd --stdin $Username &> /dev/nulldialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30elsedialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30fi fi # bash adduser.sh
现在来实现输入账号、密码
# vim adduser.sh
#!/bin/bash
#
Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`
RETVAL=$?
if [ $RETVAL -eq 0 -a -n "$Username" ]; then #判定$?,如果其值等于0,且用户名不为空,且当前主机上不存在这个用户
if ! id $Username &> /dev/null; then
useradd $Username
Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --passwordbox "Please enter the password: " 10 30`
echo $Pass | passwd --stdin $Username &> /dev/null
dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30
else
dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30
fi
fi
# bash -n adduser.sh
# bash adduser.sh
输入密码时,没有显示任何信息
如果想让用户在输入密码时显示*号
# vim adduser.sh Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --insecure --passwordbox "Please enter the password: " 10 30` #加入了--insecure选项 # bash adduser.sh
现在显示*号了
如果用户没有给密码怎么办
# vim adduser.sh
# dialog --title "Cal" --calendar "Canlendar" 6 45 8 4 2015
# dialog --title "Checklist" --checklist "Yourself" 10 30 2 h hight no w width yes
# vim backup.sh #!/bin/bash # Dir=('/etc/httpd' '/etc/pam.d' '/etc/vsftpd') Source=`dialog --stdout --title "Backup" --checklist "Choose the dir you want to backup: " 10 50 3 0 /etc/httpd 0 1 /etc/pam.d 1 2 /etc/vsftpd 0` echo $Source Source=`echo $Source | tr -d '"'` for I in $Source; doecho ${Dir[$I]} done # bash backup.sh
会显示
"0" "2" /etc/httpd /etc/vsftpd # vim showusage.sh #!/bin/bash # ShowItem=`dialog --stdout --title "Show Usages" --menu "Choose the Usage you want: " 12 35 6 1 "Show disk usages" 2 "Show physical memory usages" 3 "Show swap usages" 4 "quit"`case $ShowItem in "1")df -lh;; "2")free -m | grep "^Me";; "3")free -m | grep "^Sw";; "4")exit;; esac # bash showusage.sh
Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 23G 24G 50% / tmpfs 1.9G 21M 1.9G 2% /dev/shm /dev/sda1 190M 51M 129M 29% /boot /dev/mapper/myvg-mydata 9.8G 54M 9.2G 1% /mydata # bash showusage.sh
Mem: 3776 2483 1292 144 661 575 # bash showusage.sh
Swap: 9999 182 9817 # vim gauge.sh #!/bin/bash # (for Percent in {1..100};doecho "XXX"echo "Percent: ${Percent}%"echo "XXX"echo $Percentsleep 0.2 done) | dialog --clear --gauge "Gauge" 8 60 0 # bash gauge.sh
# 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
转载于:https://blog.51cto.com/523958392/1631380
dialog窗口编程的入门使用相关推荐
- python可视化窗口编程-Python可视化界面编程入门
Python可视化界面编程入门具体实现代码如所示: (1)普通可视化界面编程代码入门: import sys from PyQt5.QtWidgets import QWidget,QApplicat ...
- python编程 入门到实践-终于懂了python编程从入门到实践
Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的python编程 ...
- opengl编程从入门到精通-hello,window
窗口 程序中使用的glad.c和glad.h源码: 链接: https://pan.baidu.com/s/1TmtM7O8J4aTnfP6elIgs7g 密码: g5go github源码仓库 op ...
- OpenGL编程轻松入门(一)
OpenGL编程轻松入门(一) (由同事黄燕创作) 本文介绍了有关OpenGL的基本知识,主要涉及颜色.绘制几何体.坐标变换.堆栈操作.显示列表.光照和材质.纹理映射.特殊效果.曲面和曲线的绘制. ...
- c++整理程序 dev_C编程从入门到实践:C语言开发工具详解(2)
DEV C++是一款经典的轻量级C语言开发工具,其安装大小只有几十兆,并且具有图形视图界面,操作比较容易.在DEV C++编码界面中可以使用复制和粘贴等命令,这提高了开发效率. 2.3.1安装DEV ...
- pythonwhile循环love_input和while循环——Python编程从入门到实践
Python Python开发 Python语言 input和while循环--Python编程从入门到实践 input( ) input()函数:让程序运行暂停,等待用户输入. message = ...
- C++网络编程快速入门(四):EPOLL模型使用
目录 基本使用方法 step1:创建epollfd step2:将fd绑定到epollfd step3:调用epoll_wait检测事件 epoll_wait与poll.select区别所在 水平触发 ...
- python编程 从入门到实践-终于懂了python编程从入门到实践
Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的python编程 ...
- 《Linux C编程从入门到精通》——第 1 章 Linux基础 1.1Linux的起源、发展和分类...
本节书摘来自异步社区<Linux C编程从入门到精通>一书中的第1章,第1.1节,作者:宋磊 , 程钢著,更多章节内容可以访问云栖社区"异步社区"公众号查看 第 1 章 ...
最新文章
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...
- 【数学和算法】初识卡尔曼滤波器(二)
- 中国石材胶市场需求现状调研与前景预测分析报告2022版
- 在.net 中依据页的角色验证方式产生相匹配的菜单
- 2纳米芯片问世!芯片性能要起飞?!
- hook xposed 自定义类_【开始学习React Hook(1)】Hook之useState
- 土地利用覆被变化的概念_欠压实概念极其荒谬
- 判断 json html标签,javascript如何判断是否为json?
- “万物控制”是物联网下一个挑战
- 网络协议学习---LLDP协议学习
- 2020年机修钳工(中级)考试报名及机修钳工(中级)免费试题
- wordpress模板_如何在15分钟内定制WordPress模板
- 里恩EDC详解临床研究常用的设计类型
- java 阶梯_Java if-else-if阶梯语句
- UVA 1416 最短路
- Get和Post请求参数格式
- 关于接口连续调用,查询数据库数据不一致的情况
- Java中的偏向锁是什么
- 读书寄语:慎独自律,学思并重
- iPhone 13系列电池信息曝光,续航稳了
热门文章
- 数据分析师mysql基础_数据分析师之mysql入门——数据检索
- flex布局实现叠在另一个div之上_CSS3 flex弹性伸缩布局[上]
- cocos 时间函数需要什么引用_与时间赛跑:微盟的数据恢复为什么需要这么长时间...
- Language modeling tutorial in torchtext
- 图解TCPIP-DNS
- 20 Alarms, sigaction(), and Reentrant System Calls
- scrapy crawlspider
- MySQL json-table-functions
- C++ 内建函数对象
- python log