'Programming'에 해당되는 글 58건
- 2008.02.13 [쉘스크립트] 압축해제(tar,zip,rar) 4
- 2008.02.04 쉘스크립트 하는데 7
- 2008.02.02 좋은 프로그래밍 습관이란 책을 읽고.
- 2008.02.01 터미널이 끈기는 문제 2번째 해결본건가?
- 2008.01.24 오늘 할짓 없어서 한 뻘짓. 4
[쉘스크립트] 압축해제(tar,zip,rar)
Programming/Shell script 2008. 2. 13. 20:47
이건 몇달 전부터 만들어 쓰던건데..
그냥 개삽질해서 확장자를 얻어내는거라 상당히 소스가 더럽습니다 -_-
지금 고칠려면 더 잘고칠수 있긴한데 안그래도 뭐 잘 동작하는데.. 하고 걍 방치중입니다...;;
바로 위에 소스가 이게 필요하기 때문에 같이 올립니다..
사용법 > 파일이름(저 소스파일) 압축파일
파일이름(저 소스파일) 압축파일 압축을풀위치
그냥 개삽질해서 확장자를 얻어내는거라 상당히 소스가 더럽습니다 -_-
지금 고칠려면 더 잘고칠수 있긴한데 안그래도 뭐 잘 동작하는데.. 하고 걍 방치중입니다...;;
바로 위에 소스가 이게 필요하기 때문에 같이 올립니다..
사용법 > 파일이름(저 소스파일) 압축파일
파일이름(저 소스파일) 압축파일 압축을풀위치
#!/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
'Programming > Shell script' 카테고리의 다른 글
Screenlet 에 현재 재생중인 음악파일 커버 출력시키기 (6) | 2010.06.20 |
---|---|
mplayer 백그라운드 실행법 (3) | 2009.01.28 |
Bash 쉘스크립트 배열 (9) | 2009.01.12 |
Mplayer로 workspace이동하기 (2) | 2008.02.20 |
[쉘스크립트]자막파일 이름 안바꾸고 애니보기 (4) | 2008.02.14 |
쉘스크립트 하는데
Programming 2008. 2. 4. 22:40
졸라 어렵네 ㅜㅜ
차라리 C로 파이프 써서 하는게 더 쉽겠다 (............)
맨날 C 만 해댓더니만 그쪽으로 아예 머리가 굳어버린듯 (............)
무서운데............ 이러다 딴것도 못배우는거 아녀 ;;
이거 모르는거 하나하나 언제 다 찾아가면서 하나...
차라리 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 |
좋은 프로그래밍 습관이란 책을 읽고.
Programming/C 2008. 2. 2. 16:27
뭐 뒷면 책 내용 소개하는것중에 딱 마음에 드는게 하나(아래 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 파일포인터
나에게는 그져 존재감만 있는 그런놈..
실제로 써본적은.. 딱 한번인가 밖에 없네요...
어디에서 쓴건데 기억은 안나지만... 뭐 암튼 복습한다는 치고 읽어본.
중간에 이야기 몇몇 적어논것도 볼까 싶어서.....
제대로 볼시간이 없어서 걍 빌렸는데..
수준은...막 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 파일포인터
나에게는 그져 존재감만 있는 그런놈..
실제로 써본적은.. 딱 한번인가 밖에 없네요...
어디에서 쓴건데 기억은 안나지만... 뭐 암튼 복습한다는 치고 읽어본.
'Programming > C' 카테고리의 다른 글
이거 왜이래~! (6) | 2009.04.02 |
---|---|
플로피 디스크 이미지를 만들어서 mount하자! (5) | 2008.06.01 |
오늘 할짓 없어서 한 뻘짓. (4) | 2008.01.24 |
메모리 직접 접근의 유용성 (memcpy) (3) | 2007.07.01 |
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
터미널이 끈기는 문제 2번째 해결본건가?
Linux/내부설정 2008. 2. 1. 16:06
저번에 끈긴다고 해결방법 올렸던거 같은데 그것도 잘 안되길래 방치 했다가
끈길때 glxgears를 실행하면 또 터미널이 안끈기고 잘된다냐느 사실을 재발견 했습니다..
이걸 몇달동안 까먹고 있다가 어제 다시 알아냈네요..
그래서, 저작년에 배웠던 opengl (윈도우 만들고 그안에 네모 그리는 소스, 지금은 정말 하나도 할줄 모름)
도 glxgears 와 같이 끈김 없애주는 효과가 있네요...
그래서 이리저리 실험한 결과 최대한 간소화 시켜서
이렇게 하면 될겁니다.. output 파일을 ~/.xinitrc 의 마지막에서 두번쩨에
(맨 아래는 윈도우 메니져가 위치 해야하므로) 추가해서
엑스 시작시 실행하게 시키면 끈김 효과는 바이바이~
아직 100% 는 확신할수 없지만 한 50번정도 엑스를재시작 해도 별 끈김 효과가 없네요.. 아직까진..
그리고 전체적으로 화면 갱신속도도 도 빨라진거 같습니다..
1년동안 사람 괴롭히던게 일단 해결을 본것 같이 보이는데.. 좀더 지겨봐야 할듯..
결론은
Conky 이게다 너 때문이야!!!
한글폰트 쓸려면 xft 켤수 밖에 없는데 어쩔??
끈길때 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 <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;
}
#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 켤수 밖에 없는데 어쩔??
'Linux > 내부설정' 카테고리의 다른 글
리눅스에서 hp 프린터 인식문제 (4) | 2008.05.23 |
---|---|
대기 모드 설정 (2) | 2008.03.07 |
scim에서 이상한 문자가 입력될때 (0) | 2008.01.27 |
오늘의 리눅스 삽질 (2) | 2008.01.26 |
xorg에서 caps lock들어내고 esc키 만들기 (No xmodmap) (5) | 2007.11.08 |
오늘 할짓 없어서 한 뻘짓.
Programming/C 2008. 1. 24. 01:11
Rss에서 신비로 게시판 올라온 자료들 확인할수 있게 conky에 추가!
(실시간 다운을 위해서??)
일단 그냥 따로 실행파일 만들어서 설정파일에서 따로 명령을 실행시키게 만들어놨다
execl인가 뭐 그걸로..
음.....C로 했는데 다해놓고 보니까 그냥 쉘 스크립트로 할수도 있겠구나 싶었다..
(맞다! curl도 있구나!)
wget으로 받은다음 sed같은거 써서 출력하게 해도 됬었을 텐데
괜히 소켓쓰고 파일받고 문자열 파싱한다고 뻘짓했다..............
(뭐 로케일 변환 빼면 전에 다 만든거라 새루 한건 별루없;;)
그러고보니,,,,,,,,아 오늘이 아니고 인제 어제구나...........
포스팅은 해야겠고 올릴글은 업ㅂ어서 ...
'Programming > C' 카테고리의 다른 글
플로피 디스크 이미지를 만들어서 mount하자! (5) | 2008.06.01 |
---|---|
좋은 프로그래밍 습관이란 책을 읽고. (0) | 2008.02.02 |
메모리 직접 접근의 유용성 (memcpy) (3) | 2007.07.01 |
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
Mpd 싱크 가사....... 프로그램 (8) | 2007.05.25 |