블로그 이미지
Rano 님의 리눅스에 관한것과 기타등등이 존재하는 곳 입니다.이 RanoKing


압축자동해제 스크립트

리눅스/쉘스크립 | 2008. 11. 22. 00:50 | Posted by RanoKing
처음 하는 스크립트라 문법도 모르고 남에거 보면서 대충 날림으로 검색하면서
만든 허접한 자동 압축해제 스크립

chmod +x unzr        명령실행해서 실행가능 파일로 고쳐주고

~/.bash_profile 안에다가

PATH=$PATH:/home/유저계정아이디/bin   을 적어주고 실제로 저경로에 폴더생성.
실행할 스크립을 저 안에 넣어준다.

unzip unrar 의 경우 사용하는 버전혹은 배포판에따라 옵션이 틀린경우가 있으므로 유의할것.
*/-----------------------------------------------------------
먼저번엔 /usr/bin 에다가 넣었는데 이경우 스크립트가
IFS 를 이용한 해킹기법에 먹히는 수가 있으므로 이 방법을 사용한다.
-------------------------------------------------------------/*

unzr 만 치면 -x 또는 -xd 옵션주고 파일이름 입력하라고 뜸. 제대로 옵션 안주면실행안함

unzr -x * 하면 현재 경로의 모든 압축파일을 그자리에 푼다
unzr -xd * 하면 모든압축파일을 확장자를 제외한 파일이름으로 폴더를 만들어 그곳에 압축해제한다.

---------------
음... 새로 수정. 생각지 못한 오류로 새로 만듬 ㅋ 이젠 잘되는!
2차로 추가수정. 공백이 들어간 파일이름의 경우인자 인식에 오류가 있어 새로 수정함.
--------------------------------------------------

#!/bin/bash
IFS='\'
OP=($1)
file=($2)
CK=$(expr ${#file[*]} - 1)

if ((($CK == -1)) || (("$OP" != "-x")) || (("$OP" != "-xd")))
    then
    echo "not input option or filename"
    echo "unzr -x or -xd filename"
    exit 1
fi

for alfile in $*
do
if test "$OP" != "-xd"
    then
    case $alfile in
        *.zip) unzip -O cp949 $alfile
        ;;
        *.rar) unrar x $alfile
        ;;
        *.tar) tar -xvf $alfile
        ;;
        *.gz*) tar -xvzf $alfile
        ;;
        *.tgz*) tar -xvzf $alfile
        ;;
        *.bz2) tar -xvjf $alfile
        ;;
        esac
else
    case $alfile in
        *.zip) unzip -O cp949 $alfile -d ${alfile%%.*}
        ;;
        *.rar) unrar x $alfile ./${alfile%%.*}/
        ;;
        *.tar) mkdir ${alfile%%.*}
        tar -xvf $alfile -C ./${alfile%%.*}
        ;;
        *.gz*) mkdir ${alfile%%.*}
        tar -xvzf $alfile -C ./${alfile%%.*}
        ;;
        *.tgz*) mkdir ${alfile%%.*}
        tar -xvzf $alfile -C ./${alfile%%.*}
        ;;
        *.bz2) mkdir ${alfile%%.*}
        tar -xvjf $alfile -C ./${alfile%%.*}
        ;;
    esac
fi
done


댓글을 달아 주세요

  1. lowid 2008.11.25 01:18  댓글주소  수정/삭제  댓글쓰기

    제꺼랑 거의 판박인데여 ㅋㅋ...
    인자처리하는거 빼면 거의 똑같을듯.