每个系统管理员都需要使用shell脚本不时地自动执行许多日常工作。其实许多这些小帮手都是来源于命令行,而有时也需要通过用户输入。你可以使用Python一类成熟的编程语言来完成它,或者你也可以使用Zenity工具。
Zenity是基于GTK+的一个对话框工具,并为管理员提供了许多有用的用户输入输出的命令行窗口,能够很方便的应用于shell脚本之中。虽然它的工具列表是比较有限的,但是仍然提供了日期选择器,文件/目录选择、列表框、消息框和进度条。Zenity不是一个直接脚本,而是在你的脚本中能够提供标准输出结果的工具。在这个Zenity教程中,我们浏览过很多关于怎样使用Zenity的练习实例,来把过去曾经易暴露的备份变的更加安全。
Zenity入门
快速谷歌搜索将找到许多Zenity教程和Zenity Manual官方网站的链接。你能够得到一种用Zenity来做什么的感觉,最好的办法是打开终端,并旋转它。Zenity有内置的帮助选项。它提供一个所有选项的列表,包括对每一个对话框附加的帮助。主要对话框的列表包括日历、输入、报错、消息、文件选择、清单、通知、进展、问题、警告、比例和文字信息。
许多对话框有一些简单的选项设置,例如文本输入对话框。选项包括—进入-默认文本,文本显示在输入框的上面;--隐藏-当你输入密码的时候掩饰你的输入。如果在终端上输入简单的命令,你会看到对话框,并且结果将返回给屏幕。一个例子:使用—进入命令可能看上去像下面这样:
$ zenity --entry --text=”Please enter your name”
有时候你会根据用户不同的输入采取不同的行动,例如,点击取消键。这种类型的交互是需要一些shell脚本来捕获对话框的输出,但这并不复杂。如果你不熟悉shell或Bash脚本,你可以在网上查找一些很实用的关于Bash的编程入门教程。如果你更喜欢纸质书,你可以试一试最新版的Unix和Linux 系统管理手册。它有一整章是关于脚本的介绍,其它31章也是与shell相关的,这是作为一个Linux系统管理员需要掌握的。
文件和目录
在脚本中较常见的任务之一就是使用正在执行的任务来选择一个需要的文件或目录。Zenity的文件选择对话框提供访问标准GTK+文件对话框和输出已选文件的所有路径。这个对话框包括许多选项:-- 确定-使用关联文件的覆盖,--保存提示-如果选择使用现有的文件,结果就将覆盖当前的文件。
下面这行脚本将显示一个文件选择对话框和这个strFileName变量中存储的结果:
$ strFileName=$(zenity --file-selection --save --confirm-overwrite); echo $strFileName
‘$’后面的‘=’ 促使Bash来替换Zenity命令输出,作为一个为strFileName变量赋值的目标。用前面的字符‘$’ 来代替echo命令的参数变量strFileName,结果会返回到终端屏幕。
文件选择对话框的其它选项包括:--multiple用来选择多个文件;--file-设置文件过滤器要显示的东西;--directory用于激活目录只读模式。在显示文件选择对话框之前,很容易了解文本输入对话框到选择过滤模式之间是如何联系起来的。当使用--multiple选项时,你也能够使用--separator选项来设定什么字符将用来分割文件名。如果你没有设定的话,将默认使用‘|’。
总结
通过一个小实验,你应该能够掌握如何把Zenity对话框添加到一个已存在或新的脚本里。任何需要用户输入的脚本都将是一个很好的对象,以及需要使用标准框来显示输出。--list选项完成一个伟大的解决方案,如果你需要从用户的选择中显示资料一览表。有许多像文件选择对话框一样的选项,如--checklist和--radiolist用来设置复选框或单选按钮的第一列。