Linux中大多數命令只做一件事,因此,通過Shell腳本語言把各種程序粘合起來使用時,就能完成複雜的任務。本文充分利用功能強大,但簡單易學的小工具,給出一些實際問題的解決方案,希望使Linux更實用、更好用。
讓命令「說話」
幾乎每個Linux命令都有很多選項,允許使用者根據需要靈活地定製。但這給初學者帶來諸多不便,一是學起來麻煩,二是容易遺忘,需要時不得不重新再來。
那麼有沒有辦法讓命令自己「說話」呢?通過Shell腳本語言可以給命令加上友好的「面孔」。示例如下:
:::::::::::::: cname.sh :::::::::::::: echo "Please input file name:" read old echo "Please input new name: " read new mv $old $new |
上面代碼中,mv的命令格式為:
mv 原名字 新名字
echo命令格式為:
echo 字元串
read從標準輸入中讀入一個字元串,並存入後邊的變數中,其命令格式為:
read 變數名
程序執行時顯示幫助信息,提示輸入相應的參數,最後通過簡單的變數替換,完成改名任務這個程序。雖然只有5行,卻改變了命令的行為方式,大大地增強了mv的易用性。在實際應用中,讀者可根據需要替換這個小程序的命令。
處理多個文件
在前面的基礎上,如果想給一批文件改名的話,那麼下面這個例子就更有實用價值了。
:::::::::::::: mvs.sh :::::::::::::: for s in $*; do echo "File: $s" echo "Please input new name: " read t mv $s $t if [ $? -eq 0 ]; then echo "OK!^o^" else echo "Error!" fi done |
通過for循環,「命令序列」依次處理文件列表中的所有文件。$*代表所有命令行參數,這樣文件列表就可以通過命令參數指定。後面的if語句測試命令的執行狀態,0代表執行成功。簡單部署1之後,鍵入「mvs .jpg」就可以輕鬆地批量給文件改名了。
部署方案
程序編製完成,需要仔細部署,以使安裝和使用方便。
◆在用戶主目錄下新建bin目錄(如果已建立就跳過):
mkdir ~/bin
◆把~/bin添加到PATH變數,在用戶主目錄下的.bashrc文件中添加下面幾行:
PATH=~/bin:$PATH export PATH |
◆把測試好的程序移至bin目錄,更改成簡單易記的名字,並設置文件屬性:
cp mvs.sh ~/bin/mvs chmod 755 ~/bin/mvs |
以後,就可以直接使用mvs給一批文件改名字了。
mvs *.jpg
本文所舉例子雖然簡單,但勾畫出了一些比較通用的框架,根據需要稍加修改就可以解決很多比較複雜的任務。