pkgm: 동적 압축 패키지 유지보수 및 설치 스 크 립 트

리 눅 스 를 공부 하 는 친구 들 은 아마 리 눅 스에 서 여러 가지 스트레스 해소 방법 과 명령 을 찾 은 경험 이 있 을 것 입 니 다!그러나 스트레스 해소 명령 의 사용법 을 잊 어 버 리 기 쉽 고 손 으로 유지 하 는 것 도 번 거 로 우 며 이 명령 들 을 한 번 씩 두 드 리 는 것 도 지 겨 워 요.압축 패 키 지 를 빠 르 고 동적 으로 유지 하고 업데이트 하 며 설치 할 수 있다 면 더 좋 지 않 을까요? 
        압축 패키지 동적 유지보수 의 기본 사상:  
        1.  디 렉 터 리 사용 $PKGPATH 는 모든 압축 패키지 (tar. gz, tar. bz2, deb, zip, rar, 7z, tgz) 를 저장 합 니 다.
        2.  이 압축 패키지 의 이름 을 파일 pkglist 로 동기 화하 기; 
        3.  명령 pkgm 를 사용 하여 pklist 의 압축 패 키 지 를 업데이트 하고 압축 패 키 지 를 표시 하거나 설치 합 니 다.
        4.  정규 표현 식 매 칭 을 지원 합 니 다. 문 자 를 더 적 게 두 드 립 니 다.
        새 가방 이 들 어 갈 때마다 $PKGPATH 시 pkgm - c 를 사용 하여 동기 화해 야 합 니 다. crontab 작업 을 설정 하여 정기 적 으로 수행 할 수 있 습 니 다.예 를 들 어 crontab - e 는. crontab 파일 을 열 어 편집 합 니 다. 30 22 * * * $HOME / csat / script / pkgm - c 는 매일 22 시 30 분 에 정기 적 으로 이 작업 을 수행 합 니 다. -c 옵션 의 역할 은 $PKGPATH 의 모든 압축 패 키 지 는 pkglist 에 동기 화 되 며, 이후 - l 또는 - i 에 따라 주어진 패턴 에 맞 는 패 키 지 를 간편 하 게 설치 할 수 있 습 니 다.
       pkgm - l 을 사용 하여 압축 패 키 지 를 표시 합 니 다. 예 를 들 어 $PKGPATH 아래 구 글 - chrome - stablecurrent_i386. deb, 단지 pkgm - l google 에서 표시 할 수 있 습 니 다. pkgm - l ALL 을 사용 하면 $PKG 를 볼 수 있 습 니 다.PATH 의 모든 압축 파일.
       pkgm - i google 을 사용 하면 google BRE 모드 와 일치 하 는 압축 패 키 지 를 설치 할 수 있 습 니 다. 예 를 들 어 상기 google - chrome - stablecurrent_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/packages
SETUP_PATH=$HOME/setupdir

usage()
{
    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           ,    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 1
fi

while getopts :hcl:i: opt
do
  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
  esac
done

좋은 웹페이지 즐겨찾기