Zenity教程:Linux如何自動管理腳本?
每個系統(tǒng)管理員都需要使用shell腳本不時地自動執(zhí)行許多日常工作。其實許多這些小幫手都是來源于命令行,而有時也需要通過用戶輸入。你可以使用Python一類成熟的編程語言來完成它,或者你也可以使用Zenity工具。
Zenity是基于GTK+的一個對話框工具,并為管理員提供了許多有用的用戶輸入輸出的命令行窗口,能夠很方便的應用于shell腳本之中。雖然它的工具列表是比較有限的,但是仍然提供了日期選擇器,文件/目錄選擇、列表框、消息框和進度條。Zenity不是一個直接腳本,而是在你的腳本中能夠提供標準輸出結果的工具。在這個Zenity教程中,我們?yōu)g覽過很多關于怎樣使用Zenity的練習實例,來把過去曾經易暴露的備份變的更加安全。
Zenity入門
快速谷歌搜索將找到許多Zenity教程和Zenity Manual官方網站的鏈接。你能夠得到一種用Zenity來做什么的感覺,***的辦法是打開終端,并旋轉它。Zenity有內置的幫助選項。它提供一個所有選項的列表,包括對每一個對話框附加的幫助。主要對話框的列表包括日歷、輸入、報錯、消息、文件選擇、清單、通知、進展、問題、警告、比例和文字信息。
許多對話框有一些簡單的選項設置,例如文本輸入對話框。選項包括—進入-默認文本,文本顯示在輸入框的上面;--隱藏-當你輸入密碼的時候掩飾你的輸入。如果在終端上輸入簡單的命令,你會看到對話框,并且結果將返回給屏幕。一個例子:使用—進入命令可能看上去像下面這樣:
$ zenity --entry --text=”Please enter your name”
有時候你會根據用戶不同的輸入采取不同的行動,例如,點擊取消鍵。這種類型的交互是需要一些shell腳本來捕獲對話框的輸出,但這并不復雜。如果你不熟悉shell或Bash腳本,你可以在網上查找一些很實用的關于Bash的編程入門教程。如果你更喜歡紙質書,你可以試一試***版的Unix和Linux 系統(tǒng)管理手冊。它有一整章是關于腳本的介紹,其它31章也是與shell相關的,這是作為一個Linux系統(tǒng)管理員需要掌握的。
文件和目錄
在腳本中較常見的任務之一就是使用正在執(zhí)行的任務來選擇一個需要的文件或目錄。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用來設置復選框或單選按鈕的***列。
下面是一個簡單的單行文件工具來搜索.log文件,并顯示在ListBox的對話框中:
x=$(find / -name “*.log” |zenity --list --column “Delete” --column “Files” --checklist --height 600 --width 600 --separator=”,”); echo $x
Zenity是很值得花時間努力學習怎樣有效的使用它。一旦你開始使用,就不會后悔。
【編輯推薦】