압축플때 쓰는 쉘 스크립트

 1 #!/bin/bash
 2
 3 # 지원하는 파일들은 다음과 같습니다
 4 # zip,alz,rar,tar.gz,tar,tar.bz2,gz,tgz
 5 # 물론 unalz,unzip,unrar,tar등이 설치되어 있어야 합니다
 6 # (첫번째 인자의)파일의 확장자를 찾아내서 처리합니다..
 7
 8 # IFS 인자를 백업후 .을 IFS인자로 설정
 9 OLD_IFS=$IFS
10 IFS='.'
11
12 # 첫번째 인자를 변수에 넣고 .을 간격자로한 갯수를 구한다
13 ARG1=($1)
14 ARRAY_SIZE=$(expr ${#ARG1[*]} - 1)
15
16 if (( $ARRAY_SIZE == -1));then
17     echo "인자가 부족합니다.."
18     echo "사용법 : $0 파일명 (압축을 )경로"
19     exit 1
20 fi
21
22 # 파일의 확장자를 정한다 (맨뒤에꺼만 아면 된다
23 # tar.gz같은경우도 gz면 되기때문에 맨마지막만 검사한다
24 if [ "${ARG1[$ARRAY_SIZE]}" = "zip" ];then
25     EXTENSION="zip"
26 elif [ "${ARG1[$ARRAY_SIZE]}" = "rar" ];then
27     EXTENSION="rar"
28 elif [ "${ARG1[$ARRAY_SIZE]}" = "alz" ];then
29     EXTENSION="alz"
30 elif [ "${ARG1[$ARRAY_SIZE]}" = "tar" ];then
31     EXTENSION="tar"
32 elif [ "${ARG1[$ARRAY_SIZE]}" = "gz" ];then
33     EXTENSION="gz"
34 elif [ "${ARG1[$ARRAY_SIZE]}" = "tgz" ];then
35     EXTENSION="tgz"
36 elif [ "${ARG1[$ARRAY_SIZE]}" = "bz2" ];then
37     EXTENSION="bz2"
38 else
39     echo "지원되지 않는 압축파일입니다 확장자를 확인해 주세요!"
40     echo "지원되는 압축파일 : ZIP,RAR,ALZ,TAR,GZ(or tar.gz),BZ2(or tar.bz2)"
41     exit 1
42 fi
43
44 # IFS를 복원
45 IFS=$OLDIFS
46
47 # IFS를 복원했기때문에 원래 인자들이 대입된다
48 # 그리고 전체 인자 갯수를 구해서, 압축을 풀
49 # 장소가 command 에 있는지 검사하고 실행한다
50 ARG1=($1)
51 ARG2=($2)
52 ARG_NUM=$#
53
54 # (경로)인자가 존재하지 않는다면
55 if(($ARG_NUM == 1));then
56     if [ "$EXTENSION" = "zip" ];then
57         unzip $ARG1
58     elif [ "$EXTENSION" = "rar" ];then
59         unrar e -d $ARG1
60     elif [ "$EXTENSION" = "alz" ];then
61         unalz $ARG1
62     elif [ "$EXTENSION" = "tar" ];then
63         tar -xvf $ARG1
64     elif [ "$EXTENSION" = "gz" ];then
65         tar -xvzf $ARG1
66     elif [ "$EXTENSION" = "tgz" ];then
67         tar -xvzf $ARG1
68     elif [ "$EXTENSION" = "bz2" ];then
69         tar -xvjf $ARG1
70     fi
71 # 존재한다면 경로대로 압축을 해제시킨다
72 elif(($ARG_NUM == 2));then
73     if [ "$EXTENSION" = "zip" ];then
74         unzip $ARG1 -d $ARG2
75     elif [ "$EXTENSION" = "rar" ];then
76         unrar x $ARG1
77     elif [ "$EXTENSION" = "alz" ];then
78         unalz $ARG1 $ARG2
79     elif [ "$EXTENSION" = "tar" ];then
80         tar -xvf $ARG1 -C $ARG2
81     elif [ "$EXTENSION" = "gz" ];then
82         tar -xvzf $ARG1 -C $ARG2
83     elif [ "$EXTENSION" = "tgz" ];then
84         tar -xvzf $ARG1 -C $ARG2
85     elif [ "$EXTENSION" = "bz2" ];then
86         tar -xvjf $ARG1 -C $ARG2
87     fi
88 fi

간단한(?) 스크립트.
여러 압축파일을 풀때 사용합니다
제가 워낙 다운족이다보니 압축은 안하고 풀기만 합니다...
리눅스인만큼 tar.gz 같은 파일 도 많이 풀지만
애니 자막을 풀기도 하기 때문에 zip,rar,같은것두 사용해서 적어 놨습니다

사실 그냥  alias로 해결하곤 했는데 인제 ut uz ur 쓰는것도 귀찮아져서 그냥
한번에 할려구 그냥 쉘 스크립트를 하나 만든거에요..

tar.gz tar.bz2같은거 때문에 확장자 뻘짓고생을 했것만.. 어짜피 마지막 확장자로
압축을 푸니까 별로 중요하지 않더라는..

음.. 일단 그리고 인자가 없을때만 한번 테스트 해봤더니 그건 잘 돌아가는군요
.. 압축풀 경로를 정했을때는 테스트를 안해봐서 잘 모르겠습니다만.........;;;;
잘되겠져멀~~~~~~~(무책임 =3=3)
오랜만에 쉘스크립트를 만들다보니까 잘 적응이 안되서 또 해멨지만..( 무지하게)
Trackback 0 Comment 4
  1. Favicon of http://oseb.egloos.com BlogIcon oseb 2007.06.19 18:19 address edit & del reply

    이렇게 쓰시는군요. 전 찾아서 해당 명령으로 일일이 다 푸는데...
    p7zip은 저것 전부다 지원할 것 같은 생각이 막 떠올랐습니다. ;-)

    PS. man보니깐 그렇네요.
    The program supports 7z (that implements LZMA compression algorithm), ZIP, CAB, ARJ, GZIP, BZIP2, TAR, CPIO, RPM and DEB formats.

    • lowid 2007.06.20 16:06 address edit & del

      고맙습니다 oseb님...
      Arch에도 패키지가 있군요 지금 써봐야겠습니다..
      아아.. 저는 또 삽질을 한건가요 ㅜㅜ..

  2. ㅁ_ㅁ 2007.07.06 20:51 address edit & del reply

    컹커러 쓰면 됩니다

    • lowid 2007.07.07 11:10 address edit & del

      fluxbox에 컹커러 쓸바에야 걍 kde쓰겠어연 ㅋ
      가벼워서 fluxbox쓰는데 컹커러 돌리면 무겁잖아요..

prev 1 ··· 196 197 198 199 200 201 202 203 204 ··· 342 next