'Programming'에 해당되는 글 58건

  1. 2008.02.13 [쉘스크립트] 압축해제(tar,zip,rar) 4
  2. 2008.02.04 쉘스크립트 하는데 7
  3. 2008.02.02 좋은 프로그래밍 습관이란 책을 읽고.
  4. 2008.02.01 터미널이 끈기는 문제 2번째 해결본건가?
  5. 2008.01.24 오늘 할짓 없어서 한 뻘짓. 4

[쉘스크립트] 압축해제(tar,zip,rar)

이건 몇달 전부터 만들어 쓰던건데..

그냥 개삽질해서 확장자를 얻어내는거라 상당히 소스가 더럽습니다 -_-

지금 고칠려면 더 잘고칠수 있긴한데 안그래도 뭐 잘 동작하는데.. 하고 걍 방치중입니다...;;


바로 위에 소스가 이게 필요하기 때문에 같이 올립니다..

사용법 > 파일이름(저 소스파일)  압축파일
         파일이름(저 소스파일)  압축파일 압축을풀위치

#!/bin/bash

# 지원하는 파일들은 다음과 같습니다
# zip,alz,rar,tar.gz,tar,tar.bz2,gz,tgz
# 물론 unalz,unzip,unrar,tar등이 설치되어 있어야 합니다
# (첫번째 인자의)파일의 확장자를 찾아내서 처리합니다..
# 두번째 인자가 없으면 디폴트로 처리
# 만약 두번째 인자가 있으면 두번째 인자의 디렉토리에 압축을 푼다
# 그리고 *.jpg *.gif 파일은 cover 디렉토리를 만든다음에 다 거기다 처박아

# IFS 인자를 백업후 .을 IFS인자로 설정
OLD_IFS=$IFS
IFS='.'

Move_Picture()
{
mkdir cover
mv *.jpg *.gif *.png cover
}

# 첫번째 인자를 변수에 넣고 .을 간격자로한 갯수를 구한다
ARG1=($1)
ARRAY_SIZE=$(expr ${#ARG1[*]} - 1)

if (( $ARRAY_SIZE == -1));then
echo "인자가 부족합니다.."
echo "사용법 : $0 파일명 (압축을 풀)경로"
exit 1
fi

# 파일의 확장자를 정한다 (맨뒤에꺼만 아면 된다
# tar.gz같은경우도 gz면 되기때문에 맨마지막만 검사한다
if [ "${ARG1[$ARRAY_SIZE]}" = "zip" ];then
EXTENSION="zip"
elif [ "${ARG1[$ARRAY_SIZE]}" = "rar" ];then
EXTENSION="rar"
elif [ "${ARG1[$ARRAY_SIZE]}" = "alz" ];then
EXTENSION="alz"
elif [ "${ARG1[$ARRAY_SIZE]}" = "tar" ];then
EXTENSION="tar"
elif [ "${ARG1[$ARRAY_SIZE]}" = "gz" ];then
EXTENSION="gz"
elif [ "${ARG1[$ARRAY_SIZE]}" = "tgz" ];then
EXTENSION="tgz"
elif [ "${ARG1[$ARRAY_SIZE]}" = "bz2" ];then
EXTENSION="bz2"
else
echo "지원되지 않는 압축파일입니다 확장자를 확인해 주세요!"
echo "지원되는 압축파일 : ZIP,RAR,ALZ,TAR,GZ(or tar.gz),BZ2(or tar.bz2)"
exit 1
fi

# IFS를 복원
IFS=$OLDIFS

# IFS를 복원했기때문에 원래 인자들이 대입된다
# 그리고 전체 인자 갯수를 구해서, 압축을 풀
# 장소가 command 에 있는지 검사하고 실행한다
ARG1=($1)
ARG2=($2)
ARG_NUM=$#

# (경로)인자가 존재하지 않는다면
if(($ARG_NUM == 1));then
if [ "$EXTENSION" = "zip" ];then
unzip $ARG1
elif [ "$EXTENSION" = "rar" ];then
unrar e -d $ARG1
elif [ "$EXTENSION" = "alz" ];then
unalz $ARG1
elif [ "$EXTENSION" = "tar" ];then
tar -xvf $ARG1
elif [ "$EXTENSION" = "gz" ];then
tar -xvzf $ARG1
elif [ "$EXTENSION" = "tgz" ];then
tar -xvzf $ARG1
elif [ "$EXTENSION" = "bz2" ];then
tar -xvjf $ARG1
fi
# 존재한다면 경로대로 압축을 해제시킨다
elif(($ARG_NUM == 2));then
if [ "$EXTENSION" = "zip" ];then
unzip $ARG1 -d $ARG2
elif [ "$EXTENSION" = "rar" ];then
mkdir $ARG2
cd $ARG2
unrar x $OLDPWD/$ARG1
Move_Picture
cd $OLDPWD
elif [ "$EXTENSION" = "alz" ];then
unalz $ARG1 $ARG2
elif [ "$EXTENSION" = "tar" ];then
tar -xvf $ARG1 -C $ARG2
elif [ "$EXTENSION" = "gz" ];then
tar -xvzf $ARG1 -C $ARG2
elif [ "$EXTENSION" = "tgz" ];then
tar -xvzf $ARG1 -C $ARG2
elif [ "$EXTENSION" = "bz2" ];then
tar -xvjf $ARG1 -C $ARG2
fi
Move_Picture
fi

쉘스크립트 하는데

졸라 어렵네  ㅜㅜ

차라리 C로 파이프 써서 하는게 더 쉽겠다 (............)

맨날 C 만 해댓더니만 그쪽으로 아예 머리가 굳어버린듯 (............)

무서운데............ 이러다 딴것도 못배우는거 아녀 ;;

이거 모르는거 하나하나 언제 다 찾아가면서 하나...

'Programming' 카테고리의 다른 글

nasm include  (0) 2009.01.26
qt, arm 보드에 포팅방법  (6) 2008.12.05
간만에 포스팅.. 소스 고치기!  (2) 2007.10.17
Nanika를 써보고 나는 생각들  (5) 2007.06.16
X!!- key_grab  (2) 2007.02.26

좋은 프로그래밍 습관이란 책을 읽고.

뭐 뒷면 책 내용 소개하는것중에 딱 마음에 드는게 하나(아래 printf) 있어서 도서관에서 이책을 빌렸네여..

중간에 이야기 몇몇 적어논것도 볼까 싶어서.....

제대로 볼시간이 없어서 걍 빌렸는데..

수준은...막 C땐 사람들 한테 딱 맞을듯하고요....

C복습한다고 새책 뒤지지말고 걍 이책 읽어보는것도 괜찮을것 같네요...

어지간한 C 주의할점 은 그대로 적어놨으니까.........

(적어도 이블로그를 고정적으로 방문하는 여러분께서는 볼필요가 없으실걸요,, 플밍에 관련되시는분..

현업뛰는 삭후님이나....팬터맨탈 읽으시는 환옹이나... 학교프로젝트 뛰시는 헤즐넛님이나 뭐.. 이책은 껌일듯..)

그래도 이책일고 딱 3개 정도 새로운 사실을 알아낸게 있는데

1 printf("[%s - %s] : %d\n",_FILE_,_FUNCTION__,_LINE_); 을 쓰면 편하다
그럼 [network.c - Get_Socket_Data] : 71 뭐 이런식으로 출력된다.
#define DEBUG_LINE_CHECK 위에저프린트문
요로케 해너으면 편하겠구나 싶었는데.....막상 써먹어볼려니... 당장은 없네...

2 enum 문 초기화방법..
enum문 쓰는건 알았는데 이렇게 초기화 하는 방법은 몰랐다능..(바본가?)
(왜? 제대로 쓴적이 없으니 이것도 많이 쓸 필요가 있어야 쓰지..)
책에 따르면
enum {
    KOREA = 10;
    ENGLAND,
};
뭐 이렇게 하면 KOREA = 10,ENGLAND = 11 이 된다고 합니다..
#define한게 겹칠수 있으니까 이렇게 쓰셈.. 이라고 합니다 책은........
근디.. 내가 open-source 프로그램을 몇개(많은게 아니라..) 뒤져봤었느데 말이에요,
어지간한건 걍 #define하지 (꽤 갯수가 된거 같은데.) 저렇게 enum쓰는건 첨보네요.
좋긴한데 구테여 define하는걸 enum으로 바뀔 필요는 없을듯하네요..
뭐 그냥 새로운걸 새로 알았다고 해야할까..............

3 파일포인터
나에게는 그져 존재감만 있는 그런놈..
실제로 써본적은.. 딱 한번인가 밖에 없네요...
어디에서 쓴건데 기억은 안나지만... 뭐 암튼 복습한다는 치고 읽어본.

터미널이 끈기는 문제 2번째 해결본건가?

저번에 끈긴다고 해결방법 올렸던거 같은데 그것도 잘 안되길래 방치 했다가

끈길때 glxgears를 실행하면 또 터미널이 안끈기고 잘된다냐느 사실을 재발견 했습니다..

이걸 몇달동안 까먹고 있다가 어제 다시 알아냈네요..

그래서, 저작년에 배웠던 opengl (윈도우 만들고 그안에 네모 그리는 소스, 지금은 정말 하나도 할줄 모름)

도 glxgears 와 같이 끈김 없애주는 효과가 있네요...

그래서 이리저리 실험한 결과 최대한 간소화 시켜서

#include <GL/glut.h>
#include <stdlib.h>

void MyTimer(int exit_ret)
{
    exit(exit_ret);
}

int main(int arrc,char *argv[])
{
    glutInit(&argc,argv);
    glutCreateWindow("");
    glutTimerFunc(2000,MyTimer,1);
    return 0;
}

/* 또는.. */

#include <GL/glut.h>

int main(void)
{
    glutInit(&argc,argv);
    glutCreateWindow("");
    glutSetWindowTitle("");
   
    return 0;
}

gcc -o outfile filename.c -lglut

이렇게 하면 될겁니다.. output 파일을 ~/.xinitrc 의 마지막에서 두번쩨에

(맨 아래는 윈도우 메니져가 위치 해야하므로) 추가해서

엑스 시작시 실행하게 시키면 끈김 효과는 바이바이~

아직 100% 는 확신할수 없지만 한 50번정도 엑스를재시작 해도 별 끈김 효과가 없네요.. 아직까진..

그리고 전체적으로 화면 갱신속도도 도 빨라진거 같습니다..

1년동안 사람 괴롭히던게 일단 해결을 본것 같이 보이는데.. 좀더 지겨봐야 할듯..

결론은

Conky 이게다 너 때문이야!!!
한글폰트 쓸려면 xft 켤수 밖에 없는데 어쩔??

오늘 할짓 없어서 한 뻘짓.

사용자 삽입 이미지

Rss에서 신비로 게시판 올라온 자료들 확인할수 있게 conky에 추가!

(실시간 다운을 위해서??)

일단 그냥 따로 실행파일 만들어서 설정파일에서 따로 명령을 실행시키게 만들어놨다

execl인가  뭐 그걸로..

음.....C로 했는데 다해놓고 보니까 그냥 쉘 스크립트로 할수도 있겠구나 싶었다..

(맞다! curl도 있구나!)

wget으로 받은다음 sed같은거 써서 출력하게 해도 됬었을 텐데

괜히 소켓쓰고 파일받고 문자열 파싱한다고 뻘짓했다..............

(뭐 로케일 변환 빼면 전에 다 만든거라 새루 한건 별루없;;)

그러고보니,,,,,,,,아 오늘이 아니고 인제 어제구나...........

포스팅은 해야겠고 올릴글은 업ㅂ어서 ...
prev 1 ··· 4 5 6 7 8 9 10 ··· 12 next