通过添加GUI使您的Bash脚本现代化

2020-09-27 18:07:26

Bash脚本包含一组用Bash命令语言编写的指令,这些脚本可以在Unix shell解释器中执行。我们使用bash脚本自动执行几个任务,如果我们遵循手动方式,这些任务显然很耗时。但是,与现代计算相比,bash脚本已经过时了,因为与用户的所有交互都是通过命令行界面完成的。我们知道有几个开发人员正在使用醒目的标志和颜色,以便在控制台界面中突出重要的东西。如果某个特定的老式bash脚本被技术含量很高的观众使用,那也没问题。但是,如果它是由普通观众使用的,那么有一些用户友好的交互显然是有好处的。

事实上,您可以使用Zenity命令行工具将基于GUI(图形用户界面)的输入/输出组件包含到您的下一个bash脚本中,该工具可以帮助我们显示GTK对话框。此外,可以使用Notify-Send命令行工具显示本机GUI通知。这两个工具通常随流行的Linux发行版一起提供,因此不需要任何形式的预安装。

向用户显示带有本机消息框的任务完成情况显然比在控制台中打印原始文本要好。使用Zenity可以轻松生成错误、信息、问题和警告类型的消息框。

如果用户允许,如果需要执行一组指令,则可以使用问题类型消息。例如,从磁盘删除文件。这可以使用一个简单的if条件或$?存储最后一个返回值的特殊变量。

如果Zenity--Query--Title=";确认删除";--text=";是否确实要删除此文件?";--no--WRAP则Zenity--info--title=";Success";--text=";app.log已删除";--NO--WRAP FI。

通知非常适合显示长时间运行的批处理指令的状态。非常重要的一点是,即使用户正在做一些其他工作,而不是查看控制台查看正在发生的事情,他们也会收到通知。借助Notify-Send命令行工具,可以轻松生成本机通知。

Zenity也有发送通知的功能,但Notify-Send给了我们更多的调整自由。

Zenity通过提供各种输入元素,为收集用户输入提供了很好的支持。它有以下类型的输入框。

与要求用户从控制台以yyyy-mm-dd格式输入所需日期相比,这是一种捕获用户输入日期的更好方法。

我们通常使用READ命令从控制台获取一些字符串输入。通过提供也接受通用击键(Home/End键等)的GUI文本字段,可以增强bash脚本对非技术人员的可用性。和简单的类似复制粘贴的功能。

名称=$(zenity--entry--title=";请输入您的姓名";)如果[-n";$name";]则zenity--info--text=";Hello$name";--不换行。

非常类似的Zenity--PASSWORD可用于从用户捕获秘密字符串,如密码或PIN号码。此外,输入密码还允许您启用用户名字段。然后,它将返回用|字符分隔的用户名和密码。

如果我们使用普通的控制台输入来询问用户的一些选择,我们可以实现几个缩短的键输入来满足用户的期望选择。例如,一方面要求用户输入字母A以接受一个选项,另一方面要求用户输入字母B以激活另一个选项。从用户的角度来看,可以通过显示基于GUI的列表选择来改进该方法。

让我们假设您正在编写一个安装脚本,并且您需要询问需要安装哪个助手插件才能使用主软件程序进行双因素身份验证。

$zenity--list--title=";选择一个身份验证插件";--column=";id";--column=";name";googleauth";Google Authenticator";\msarth";Microsoft Authenticator";\Authy";Authy Authenticator";