pkgm : 動態壓縮包維護與安裝指令碼

來源:互聯網
上載者:User

        學習Linux 的朋友們,大概都有過在 linux 下尋找各種解壓方法和命令的經曆吧! 可是, 總是容易忘記解壓命令的用法, 而且手工維護也挺麻煩,一遍遍敲入這些命令也挺膩的。 如果能夠快捷、動態地維護和更新、安裝壓縮包, 那不是更好 ? 

        壓縮包動態維護的基本思想:   

        1.  使用目錄 $PKG_PATH 存放所有的壓縮包(tar.gz, tar.bz2, deb, zip, rar, 7z, tgz);

        2.  使用檔案 pkglist 同步儲存這些壓縮包的名稱; 

        3.  使用命令 pkgm 來更新 pkglist 中的壓縮包,並顯示或安裝其中的壓縮包;

        4.  支援Regex匹配,進一步少敲字元。

        每當有新包置入 $PKG_PATH 時, 應使用 pkgm -c 來同步;  還可以設定 crontab 任務來定期執行。 比如 crontab -e 開啟 .crontab 檔案進行編輯 : 30 22 * * * $HOME/csat/scripts/pkgm -c 使得每天 22:30 分鐘定期執行該任務。  -c 選項的作用根據 $PKG_PATH 下的所有壓縮包同步其名稱到 pkglist 中,此後可以根據 -l 或 -i 來便捷安裝匹配給定模式的軟體包。

       使用 pkgm -l 來顯示其中的壓縮包,比如$PKG_PATH下有google-chrome-stable_current_i386.deb, 只需 pkgm -l google 即可顯示;  使用 pkgm -l ALL 能夠查看$PKG_PATH 下的所有壓縮包。

       使用 pkgm -i google 可以安裝其中與 google BRE模式比對的壓縮包, 比如上述 google-chrome-stable_current_i386.deb。

 

       優勢:  再也不用理會一大堆解壓命令了。 只需要記住 pkgm -i|-c|-l 即可。 動態維護; 少敲幾個字元。

        代碼如下:

         

#!/bin/bash###################################################################                                                                ##  此指令碼用於動態維護以壓縮包形式安裝的軟體包                            ##  (.tar.gz , .tar.bz2, .deb, .zip, .rar)                        ##  所有壓縮包名稱放在檔案 pkglist 中集中管理.                          # #                                                                #          #  軟體包放置路徑: PKG_PATH=$HOME/csat/packges                     ##       安裝路徑: SETUP_PATH=$HOME/setupdir                       ##                                                                ##                                                                #################################################################### 可根據自己需求來修改這兩個預設路徑PKG_PATH=$HOME/csat/packagesSETUP_PATH=$HOME/setupdirusage(){    echo 'usage: pkgm  -c            將預設路徑 $PKG_PATH(=$HOME/csat/packages) 下的壓縮包名稱同步到檔案 $PKG_PATH/pkglist '    echo '             -l  pkgname   顯示預設路徑 $PKG_PATH 下與 pkgname 以BRE形式匹配的壓縮包名稱;若參數為 ALL,則顯示所有的壓縮包名稱 '    echo '             -i  pkgname   將與 pkgname 以BRE 形式匹配的壓縮包安裝到預設路徑 $SETUP_PATH 下; 若參數為 ALL ,則安裝所有壓縮包 '    echo '             -h            顯示協助資訊'     echo '                                       '     echo 'NOTE: BRE 指 POSIX 支援的基本Regex,請參閱 http://en.wikipedia.org/wiki/Basic_regular_expression#POSIX_Basic_Regular_Expressions,或《SHELL指令碼學習指南》(3.2) '}decomp(){   file=$1   echo "file is: " $file   case  $file in     *.tar.gz|*.tgz) tar xzf $PKG_PATH/$file -C $SETUP_PATH                   ;;     *.tar.bz2) tar jxf $PKG_PATH/$file -C $SETUP_PATH                   ;;     *.deb) sudo dpkg -i $PKG_PATH/$file              ;;     *.rar) unrar e $PKG_PATH/$file $SETUP_PATH              ;;     *.zip) unzip $PKG_PATH/$file -d $SETUP_PATH              ;;     *.7z)  7z e $PKG_PATH/$file -o${SETUP_PATH}/              ;;    esac}if [ $# == 0 ]then    usage    exit 1fiwhile getopts :hcl:i: optdo  case $opt in     c) cat /dev/null > $PKG_PATH/pkglist        ls -1 $PKG_PATH | grep -E '[a-zA-Z0-9_.+-]+\.(tar\.(gz|bz2)|deb|rar|zip|7z|tgz)$' >> $PKG_PATH/pkglist       ;;    l) param=$OPTARG       if [ "$param" = 'ALL' ]       then           cat $PKG_PATH/pkglist        else           grep -i "$param" $PKG_PATH/pkglist         fi           ;;    i) param=$OPTARG       if [ "$param" = 'ALL' ]       then           files=$(grep '.*' $PKG_PATH/pkglist)       else           files=$(grep "$param" $PKG_PATH/pkglist)        fi       for file in $files       do           decomp $file       done         ;;    h) usage       ;;    '?') echo "pkgm: 不正確的選項或參數: -$OPTARG" >&2         echo "Type pkgm -h 獲得用法資訊   "         exit 1  esacdone

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.