10 個增加 UNIX/Linux Shell 腳本趣味的工具
shell 腳本可以使用一些 GUI 組件(菜單、警告框、進度條等),你可以控制終端輸出、游標位置以及各種輸出效果等等。利用下面的工具,你可以構建強壯的、可交互的、對用戶友好的 UNIX/Linux bash 腳本。
-- Vivek Gite
致謝
編譯自 | https://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html
作者 | 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 命令
命令允許你藉助通知守護進程發送桌面通知給用戶。這種避免打擾用戶的方式,對於通知桌面用戶一個事件或顯示一些信息是有用的。在 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
這裡:
? :指定超時時間(毫秒) (5000 毫秒 = 5 秒)
? : 設置緊急等級 (如:低、普通、緊急)
? : 設置要顯示的圖標名稱或者指定的圖標(你可以設置路徑為:)
關於更多使用 功能的信息,請參考 man 手冊。在命令行下輸入 即可看見:
2、tput 命令
命令用於設置終端特性。通過 你可以設置:
? 在屏幕上移動游標。
? 獲取終端信息。
? 設置顏色(背景和前景)。
? 設置加粗模式。
? 設置反轉模式等等。
下面有一段示例代碼:
示例輸出:
Linux / UNIX Script Colours and Cursor Movement With tput
關於 命令的詳細信息,參見手冊:
3、setleds 命令
命令允許你設置鍵盤燈。下面是打開數字鍵燈的示例:
關閉數字鍵燈,輸入:
? :關閉大小寫鎖定燈
? :打開大小寫鎖定燈
? :關閉滾動鎖定燈
? :打開滾動鎖定燈
查看 手冊可看見更多信息和選項 。
4、zenity 命令
zenity 命令顯示 GTK+ 對話框
[4]
,並且返回用戶輸入。它允許你使用各種 Shell 腳本向用戶展示或請求信息。下面是一個 指定域名目錄服務的 GUI 客戶端示例。
示例輸出:
zenity: Linux / UNIX display Dialogs Boxes From The Shell Scripts
參見手冊獲取更多 信息以及其他支持 GTK+ 的組件:
5、kdialog 命令
命令與 類似,但它是為 KDE 桌面和 QT 應用設計。你可以使用 展示對話框。下面示例將在屏幕上顯示信息:
示例輸出:
Kdialog: Suppressing the display of a dialog
參見 《KDE 對話框 Shell 腳本編程
[5]
》 教程獲取更多信息。
6、Dialog
Dialog 是一個使用 Shell 腳本的應用
[6]
,顯示用戶界面組件的文本。它使用 curses 或者 ncurses 庫。下面是一個示例代碼:
參見 手冊獲取詳細信息:。
關於其他用戶界面工具的注意事項
UNIX、Linux 提供了大量其他工具來顯示和控制命令行中的應用程序,shell 腳本可以使用一些 KDE、Gnome、X 組件集:
? - 基於 GTK xmessage 的克隆
? - 在窗口中顯示或詢問消息(基於 X 的 /bin/echo)
? - 顯示來自 shell 腳本的對話框
? - 用於製作簡單文本或控制台模式用戶界面的 Python 模塊
7、logger 命令
命令將信息寫到系統日誌文件,如:。它為系統日誌模塊 syslog 提供了一個 shell 命令行介面:
示例輸出:
參見 《如何寫消息到 syslog 或 日誌文件
[7]
》 獲得更多信息。此外,你也可以查看 logger 手冊獲取詳細信息:
8、setterm 命令
命令可設置不同的終端屬性。下面的示例代碼會強制屏幕在 15 分鐘後變黑,監視器則 60 分鐘後待機。
下面的例子將 xterm 窗口中的文本以下劃線展示:
另一個有用的選項是打開或關閉游標顯示:
打開游標:
參見 setterm 命令手冊獲取詳細信息:
9、smbclient:給 MS-Windows 工作站發送消息
命令可以與 SMB/CIFS 伺服器通訊。它可以向 MS-Windows 系統上選定或全部用戶發送消息。
或
參見 手冊或者閱讀我們之前發布的文章:《給 Windows 工作站發送消息
[8]
》:
10、Bash 套接字編程
在 bash 下,你可以打開一個套接字並通過它發送數據。你不必使用 或者 命令抓取遠程伺服器的數據。bash 和兩個特殊的設備文件可用於打開網路套接字。以下選自 bash 手冊:
☉ - 如果 是一個有效的主機名或者網路地址,而且埠是一個整數或者服務名,bash 會嘗試打開一個相應的 TCP 連接套接字。
☉ - 如果 是一個有效的主機名或者網路地址,而且埠是一個整數或者服務名,bash 會嘗試打開一個相應的 UDP 連接套接字。
你可以使用這項技術來確定本地或遠程伺服器埠是打開或者關閉狀態,而無需使用 或者其它的埠掃描器。
下面的代碼片段,你可以利用bash 循環找出已打開的埠
[9]
:
示例輸出:
下面的示例中,你的 bash 腳本將像 HTTP 客戶端一樣工作:
參見 bash 手冊獲取更多信息:
關於 GUI 工具和 cron 任務的注意事項
如果你使用 crontab
[10]
來啟動你的腳本,你需要使用 命令請求本地顯示或輸出服務。舉個例子,使用 工具調用 :
你有喜歡的可以增加 shell 腳本趣味的 UNIX 工具么?請在下面的評論區分享它吧。
關於作者
本文作者是 nixCraft 創始人、一個老練的系統管理員、Linux 操作系統和 UNIX shell 編程培訓師。他服務來自全球的客戶和不同的行業,包括 IT 、教育、防務和空間探索、還有非營利組織。你可以在Twitter
[11]
[12]
,Google+
[13]
上面關注他。
via:https://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html
作者:Vivek Gite
[15]
譯者:pygmalion666校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出
※cTop:用於容器監控的命令行工具
※Linux 如何成為我的工作
TAG:Linux中國 |