讓Linux命令加速(轉)

gugu99發表於2007-08-10
讓Linux命令加速(轉)[@more@]

  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

  本文所舉例子雖然簡單,但勾畫出了一些比較通用的框架,根據需要稍加修改就可以解決很多比較複雜的任務。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939905/,如需轉載,請註明出處,否則將追究法律責任。

相關文章