为啥要作死?

因为我天生喜欢作死。之前在写Shell的判断用户输入Yes / No的脚本的时候,总是要在While里面检测输入的内容,感觉很烦。而且一不小心fi配对错了就尴尬了。于是乎找到了这个图形界面,自由选择Yes / No。还有很多好玩的东西可以介绍介绍。

安装Dialog

Ubuntu/Debian:

apt-get update && apt-get install dialog -y

CentOS/RHEL:

yum install dialog -y

基本语法

通用选项(common options)

这个选项用来设置dialog box的背景、颜色和标题等。

--title <title>:指定将在对话框的上方显示的标题字符串。
--colors:解读嵌入式\ Z的对话框中的特殊文本序列,序列由下面的字符0-7, b,B, u, U等组成,恢复正常的设置使用\Zn。
--no-shadow:禁止阴影出现在每个对话框的底部。
--shadow:出现阴影效果。
--insecure:输入部件的密码时,使用星号来代表每个字符。
--no-cancel:设置在输入框、菜单和复选框中不显示cancel项。
--clear:完成清屏操作,在框体显示结束后,清除框体,这个参数只能单独使用,不能和别的参数联合使用。
--ok-label <str>:覆盖使用OK按钮标签,换做其它字符。
--cancel-label <str>:功能同上。
--backtitle <backtitle>:指定的backtitle字符串显示在背景顶端。
--begin <y> <x>:指定对话框左上角在屏幕上的坐标。
--timeout <secs>:超时(返回的错误代码),如果用户在指定的时间内没有给出相应动作,就按超时处理。
--defaultno:使的是默认值yes/no,使用no。
--sleep <secs>
--stderr:以标准错误方式输出。
--stdout:以标准方式输出。
--default-item <str>:设置在一份清单、表格或菜单中的默认项目,通常在框中的第一项是默认的。

窗体类型:

常见的对话框控件选项如下所示:

--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 --title TESTING --msgbox "this is a test" 10 20

Yes/No框

dialog --title "yes/no" --no-shadow --yesno "Delete the file /tmp/canjian.txt?" 10 30

输入框

dialog --title "Input your name" --inputbox "Please input your name:" 10 30  2> /tmp/name.txt

密码框

dialog --title "Password" --insecure --passwordbox "Please give a password for the new user:" 10 30

文本框

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

菜单框

dialog --title "Pick a choice" --menu "Choose one" 12 35 5 1 "say hello to everyone" 2 "thanks for your support" 3 "exit"

文件选框