10 个增加 UNIX/Linux Shell 脚本趣味的工具 | Linux
shell 脚本可以使用一些 GUI 组件(菜单、警告框、进度条等),你可以控制终端输出、光标位置以及各种输出效果等等。利用下面的工具,你可以构建强壮的、可交互的、对用户友好的 UNIX/Lin
shell 脚本可以使用一些 GUI 组件(菜单、警告框、进度条等),你可以控制终端输出、光标位置以及各种输出效果等等。利用下面的工具,你可以构建强壮的、可交互的、对用户友好的 UNIX/Linux bash 脚本。-- Vivek Gite 有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。致谢编译自| 作者|Vivek Gite 译者|Andy Luo (pygmalion666) 共计翻译:1篇 贡献时间:8 天 有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KDE 或 Gnome 桌面下,你可以有效的使用各种工具编写 GUI 或者网络(socket)脚本。shell 脚本可以使用一些 GUI 组件(菜单、警告框、进度条等),你可以控制终端输出、光标位置以及各种输出效果等等。利用下面的工具,你可以构建强壮的、可交互的、对用户友好的 UNIX/Linux bash 脚本。 制作 GUI 应用不是一项困难的任务,但需要时间和耐心。幸运的是,UNIX 和 Linux 都带有大量编写漂亮 GUI 脚本的工具。以下工具是基于 FreeBSD 和 Linux 操作系统做的测试,而且也适用于其他类 UNIX 操作系统。 1、notify-send 命令 notify-send命令允许你借助通知守护进程发送桌面通知给用户。这种避免打扰用户的方式,对于通知桌面用户一个事件或显示一些信息是有用的。在 Debian 或 Ubuntu 上,你需要使用apt 命令[1]或apt-get 命令[2]安装的包:
CentOS/RHEL 用户使用下面的yum 命令[3]:
Fedora Linux 用户使用下面的 dnf 命令:
示例输出: notify-send: Shell Script Get Or Send Desktop Notifications 下面是另一个附加选项的代码:
示例输出: Linux / UNIX: Display Notifications From Your Shell Scripts With notify-send 这里: ?-t 5000:指定超时时间(毫秒) (5000 毫秒 = 5 秒)?-u low: 设置紧急等级 (如:低、普通、紧急)?-i gtk-dialog-info: 设置要显示的图标名称或者指定的图标(你可以设置路径为:-i /path/to/your-icon.png) 关于更多使用notify-send功能的信息,请参考 man 手册。在命令行下输入man notify-send即可看见:
2、tput 命令 tput命令用于设置终端特性。通过tput你可以设置: ?在屏幕上移动光标。?获取终端信息。?设置颜色(背景和前景)。?设置加粗模式。?设置反转模式等等。 下面有一段示例代码:
示例输出: Linux / UNIX Script Colours and Cursor Movement With tput 关于tput命令的详细信息,参见手册:
3、setleds 命令 setleds命令允许你设置键盘灯。下面是打开数字键灯的示例:
关闭数字键灯,输入:
?-caps:关闭大小写锁定灯?+caps:打开大小写锁定灯?-scroll:关闭滚动锁定灯?+scroll:打开滚动锁定灯 查看setleds手册可看见更多信息和选项man setleds。 4、zenity 命令 zenity 命令显示 GTK+ 对话框[4]unix数据库,并且返回用户输入。它允许你使用各种 Shell 脚本向用户展示或请求信息。下面是一个whois指定域名目录服务的 GUI 客户端示例。
示例输出: zenity: Linux / UNIX display Dialogs Boxes From The Shell Scripts 参见手册获取更多zenity信息以及其他支持 GTK+ 的组件:
5、kdialog 命令 kdialog命令与zenity类似,但它是为 KDE 桌面和 QT 应用设计。你可以使用kdialog展示对话框。下面示例将在屏幕上显示信息:
示例输出: Kdialog: Suppressing the display of a dialog 参见 《KDE 对话框 Shell 脚本编程[5]》 教程获取更多信息。 6、Dialog Dialog 是一个使用 Shell 脚本的应用[6],显示用户界面组件的文本。它使用 curses 或者 ncurses 库。下面是一个示例代码:
参见dialog手册获取详细信息:man dialog。 关于其他用户界面工具的注意事项 UNIX、Linux 提供了大量其他工具来显示和控制命令行中的应用程序,shell 脚本可以使用一些 KDE、Gnome、X 组件集: ?gmessage- 基于 GTK xmessage 的克隆?xmessage- 在窗口中显示或询问消息(基于 X 的 /bin/echo)?whiptail- 显示来自 shell 脚本的对话框?python-dialog- 用于制作简单文本或控制台模式用户界面的 Python 模块 7、logger 命令 logger命令将信息写到系统日志文件,如:/var/log/messages。它为系统日志模块 syslog 提供了一个 shell 命令行接口:
示例输出:
参见 《如何写消息到 syslog 或 日志文件[7]》 获得更多信息。此外,你也可以查看 logger 手册获取详细信息:man logger 8、setterm 命令 setterm命令可设置不同的终端属性。下面的示例代码会强制屏幕在 15 分钟后变黑,监视器则 60 分钟后待机。
下面的例子将 xterm 窗口中的文本以下划线展示:
另一个有用的选项是打开或关闭光标显示:
打开光标:
参见 setterm 命令手册获取详细信息:man setterm 9、smbclient:给 MS-Windows 工作站发送消息 smbclient命令可以与 SMB/CIFS 服务器通讯。它可以向 MS-Windows 系统上选定或全部用户发送消息。
或
参见smbclient手册或者阅读我们之前发布的文章:《给 Windows 工作站发送消息[8]》:man smbclient 10、Bash 套接字编程 在 bash 下,你可以打开一个套接字并通过它发送数据。你不必使用curl或者lynx命令抓取远程服务器的数据。bash 和两个特殊的设备文件可用于打开网络套接字。以下选自 bash 手册: ☉/dev/tcp/host/port- 如果host是一个有效的主机名或者网络地址,而且端口是一个整数或者服务名,bash 会尝试打开一个相应的 TCP 连接套接字。☉/dev/udp/host/port- 如果host是一个有效的主机名或者网络地址,而且端口是一个整数或者服务名,bash 会尝试打开一个相应的 UDP 连接套接字。 你可以使用这项技术来确定本地或远程服务器端口是打开或者关闭状态,而无需使用nmap或者其它的端口扫描器。
下面的代码片段,你可以利用bash 循环找出已打开的端口[9]:
示例输出:
下面的示例中,你的 bash 脚本将像 HTTP 客户端一样工作:
参见 bash 手册获取更多信息:man bash 关于 GUI 工具和 cron 任务的注意事项 如果你使用 crontab[10]来启动你的脚本,你需要使用export DISPLAY=[用户机器]:0命令请求本地显示或输出服务。举个例子,使用zenity工具调用/home/vivek/scripts/monitor.stock.sh:
你有喜欢的可以增加 shell 脚本趣味的 UNIX 工具么?请在下面的评论区分享它吧。 关于作者 本文作者是 nixCraft 创始人、一个老练的系统管理员、Linux 操作系统和 UNIX shell 编程培训师。他服务来自全球的客户和不同的行业,包括 IT 、教育、防务和空间探索、还有非营利组织。你可以在Twitter[11],Facebook[12],Google+[13]上面关注他。 via: 作者:Vivek Gite[15]译者:pygmalion666校对:wxy 本文由LCTT原创编译,Linux中国荣誉推出 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |