实验七 Shell脚本运行的优化
一、添加窗口
在Shell脚本的运行过程中,也可以实现类似于Windows系统和Linux系统中的窗口效果,使脚本运行美观。
1.dialog软件的安装 - dialog软件包是Linux系统中常用的软件包,该软件包最初由Savio Lam设计,它利用ANSI转义控制码在文本环境中创建标准的Windows对话框,从而可在Shell脚本中使用对话框,实现文本的交互。 - 如果第一次使用dialog软件,则需要安装dialog的相关内容。安装过程如下:
使用dialog --help获取dialog命令的帮助信息。
2.dialog命令的使用 - dialog软件包是由dialog命令来实现的,dialog命令的一般使用方式如下: dialog --窗口类型 --参数 - dialog能够将需要显示的内容显示在确定的窗口上。dialog命令常用的窗口类型如下表所示:
dialog命令还可以使用参数来丰富创建的窗口内容,如添加标题、背景颜色、显示某些按钮等。dialog命令常用的选项如下表:
例一:
例二:
赋予可执行权限后执行脚本,结果如下:
在bash中,一般使用标准变量$?来获取dialog窗口的返回代码,进而获取选择的按钮。
思考题:自行练习其他窗口类型和常用选项。
二、dialog常用窗口的使用
1.消息窗口 - 消息窗口一般用来显示需要输出的提示性信息,在窗口上一般会有一个【确认】按钮,当单击【确认】按钮以后,该消息窗口就会退出,该窗口的返回状态是0。
例一:
2.文本框 - 文本框一般用来输入或输出一些文本信息,常用的文本框有可编辑文本框和不可编辑文本框。
例二:
3.菜单 - 创建菜单时,主要是提供一个选择标签和显示的文本。
例三:
三、颜色的使用
在普通的操作系统中,显示的颜色是五颜六色的,而对于默认的Shell脚本来说,不管是脚本编辑环境还是运行环境,以及运行结果的显示,都显得相对单调。因此在Shel脚本的运行过程,可以通过设置输出格式的ANSI转义码来为Shell脚本的运行添加一点点“颜色”。
ANSI 转义码以控制序列指示器(Control Sequence Indicator,CSI)开头,后面添加要在显示器上执行的操作数据,CSI的作用就是告诉终端该数据表示一个转义码,而不是普通的字符。大多数终端模拟软件都能够识别设置输出格式的ANSI转义码。
ANSI转义码可以实现多种功能,可以将光标定位在显示器的特定位置,还可以按照特定的格 式来进行显示。当使用ANSI转义码时需要将对应的控制码发送到终端,需要按照一定的格式进行 发送,基本格式如下:
A[+[+控制码+文字
在上面的基本格式中,第一个符号是一个ESC符号,但是一般都使用十六进制数值033表示,需要在前面加一个转移字符“\”才会启动ANSI转义码。在ESC符号的后面是一个左中括号“[”,该符号是CSI中的特定字符,和ESC按键组成整个CSI字符。控制码可以选择一个,也可以选择多个,控制码之间使用分号分隔,但是最后需要使用符号m结尾。对于一般的操作来说,使用echo命令在终端上按照特定格式来进行文字显示和控制码重现。
效果控制代码用来控制文字在终端上的显示效果,如文字的显示是普通字体还是使用斜体,显示内容的亮度是否有特殊要求,是否具有闪烁的效果,常用的效果控制代码如下表所示:
例一:赋予可执行权限后执行脚本,结果如下:
使用ANSI转义码设置了新的输出格式以后,要及时恢复默认设置,否则,后面文字的显示格式会按照上一次成功设置的格式输出。
ANSI转义码除了能够改变文字的显示格式之外,还可以控制文字显示的前景色和背景色。前景色控制代码和背景色控制代码使用同一套颜色控制代码,但是需要使用特殊的数字来标注设定的是前景色还是背景色,一般使用3来表示前景色,而背景色用4来表示。颜色控制代码如下表所示: