Contents

Develop
2003.04.23 10:24

[unix] 쉘 스크립트 예제 모음

조회 수 14948 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
유닉스 쉘스크립트 간단 예제 모음


<메타문자 사용가능 명령어>
유닉스 시스템에서는
    % cp *.c  *.pas
같은 명령어를 사용할 수 없다.
유닉스에서는 메타문자(*, ? 등)가 해당되는 문자로 확장되서 작동되기 때문이다.
유닉스에서 이런 단점을 극복하기 위해서 
    % mmv *.c  .pas 
과 같이 작동하는 쉘스크립트를 작성해보자.

# mmv 소스 코드
#!/usr/bin/csh
# usage : % mmv  *.c  .pas

set num=$#argv
set rd=$argv[$num]
echo $rd |set ex=`cut -d. -f2`
set i=1

while ($i < $num)
    echo $1 |set name=`cut -d. -f1 `
    set name2=$name'.'$ex
    echo "name2 ="$name2
    mv $1 $name2
    shift
    @ i +=1
end


<파일 내용을 변경하는 쉘>
파일의 내용을 변경하는 것은 참으로 귀찮은 작업이다.
특히 하나의 파일이 아니고 파일이 많은 경우에는 더욱 그렇다. 
sed라는 에디터는 평상시에는 잘사용하지 않지만 배치 작업하는 경우에 아주 훌륭한 도구이다.
sed는 인터랙티브한 에디터가 아니라 배치작업용 에디터다.
기본적인 명령어는 vi에서 사용하는 것과 비슷하다.
자세한 내용은 매뉴얼이나 책을 참조하기 바란다.

다음의 modify.sh라는 스크립터는,
많은 html파일들에서 @enigma라는 문자열을 찾아서 enigma를 amin으로 변경하는 예이다.
s는 substitute를 의미한다.
g는 해당되는 문자열을 모두 바꾸라는 옵션이다.

modify.sh 파일
용도 : *.html 파일에서 @enigma를 찾아 enigma를 amin으로 변경 후 *.html.new라는 파일에 저장.
#!/bin/csh
# usage : % modify.sh

foreach i ([1-9]*.html)
    sed '/@enigma/s/enigma/amin/g' $i > $i".new"
end

modify.sh를 이용해서 내용을 변경한 파일들을 *.html.new로 저장했기 때문에 이 파일들을 원래의 *.html 파일로 변경해야한다.
이것은 rename.sh 스크립터를 통해서 할 수 있다.

rename.sh 파일
용도 : *.html.new 파일을  *.html 파일로 변경.
#!/bin/csh
# usage : % rename.sh

foreach i (*.html.new)
    set front = `echo $i |awk -F. '{print $1}'`
    set name = $front".html"
    cp $i $name
end


<자동으로 HTML 파일 생성>
자바를 이용해 애플릿을 만들면 항상 HTML파일을 만들어서 테스트를 하게 된다.
매번 이 HTML 파일을 만드는 것은 귀찮은 작업이다.
이번에는 SHELL을 이용해서 자동적으로 HTML파일을 만드는 작업을해보자.

apl.sh 파일
용도: 클래스 이름과 동일한 HTML파일을 작성하고 appletviewer로 애플릿을 테스트한다.
#!/usr/bin/csh
# usage : % apl.sh  클래스이름
# ex) % apl.sh  HelloWorldApplet

set TMP=$1.html
echo "<applet code=$1.class width=300 height=400>n</applet>" > $TMP
appletviewer $TMP

rm $TMP



<파일들을 크기별로 정렬>
#!/usr/bin/csh
# usage : % ll [-a|-d] directory

switch ( $1 )
    case "-a":
        ls -l $argv[2-$#argv] | sort -n +4 -5 |more
        breaksw
    case "-d":
        ls -l $argv[2-$#argv] | sort -nr +4 -5 |more
        breaksw
    default:
        ls -l $* |more
        breaksw
endsw

위의 스크립트를 좀 개량해보자.
#!/usr/bin/csh
# usage : % ll [-a|-d] directory

onintr  intr
@ num = $#argv - 1
set bool = 0

switch ( $1 )
    case "-a":
        shift
        if ( $#argv > 0 ) then
            set bool = 1
            while ( $num > 0 )
                echo " " >> /tmp/ll.$$
                echo "$1  ...DIRECTORY" >> /tmp/ll.$$
                ls -l $1 | sort -n +4 -5   >> /tmp/ll.$$
                @ num--
                shift
            end
            cat /tmp/ll.$$ | more
        else 
            ls -l | sort -n +4 -5 | more
        endif
        breaksw
    case "-d":
        shift
        if ( $#argv > 0 ) then
            set bool = 1
            while ( $num > 0 )
                echo " " >> /tmp/ll.$$
                echo "$1   ...DIRECTORY" >> /tmp/ll.$$
                ls -l $1 | sort -nr +4 -5 >> /tmp/ll.$$
                @ num--
                shift
            end
            cat /tmp/ll.$$ | more
        else
            ls -l | sort -n +4 -5 | more
        endif
        breaksw
    default:
        ls -l $* |more
        breaksw
endsw

intr:
if ( $bool == 1 ) then
    rm /tmp/ll.$$
endif


<파일 내용 지우기(로그파일 정리)>
파일을 크기를 0으로 만드는 스크립트를 만들어 보자.
파일 크기를 0으로 만드는 스크립트는 각종 로그 파일을 0으로 만들어 줄 때 사용될 수 있다.
#!/usr/bin/csh
# usage : % zero file1  file2  file3 ...

set num = $#argv

while ( $num > 0 )
        cp /dev/null  $1
        shift
        @ num--
end


?

  1. [linux] vi 편집기 간단한 명령과 환경설정

    Date2003.04.23 CategorySystem/OS Byhooni Views11356
    Read More
  2. [unix] 쉘 스크립트 예제 모음

    Date2003.04.23 CategoryDevelop Byhooni Views14948
    Read More
  3. [linux] 쉘 스크립트를 이용한 BBS

    Date2003.04.23 CategoryDevelop Byhooni Views10047
    Read More
  4. [c] pcap을 이용한 패킷 분석 ㅎㅎ

    Date2003.04.23 CategoryDevelop Byhooni Views10210
    Read More
  5. [js] 스크롤을 포함한 마우스 위치 찾는 코드

    Date2003.04.23 CategoryDevelop Byhooni Views8505
    Read More
  6. [js] 쿠키(cookie)에 대한 설명과 예제..

    Date2003.04.23 CategoryDevelop Byhooni Views8320
    Read More
  7. [php] URL/URI 관련 환경변수

    Date2003.04.23 CategoryDevelop Byhooni Views9146
    Read More
  8. [js] 자바스크립트로 응용프로그램 실행 ㅎㅎ

    Date2003.04.23 CategoryDevelop Byhooni Views9811
    Read More
  9. [php] 쉘에서 실행할 때 인수(파라미터) 받기..

    Date2003.04.23 CategoryDevelop Byhooni Views11588
    Read More
  10. [js] 자바스크립트 이벤트 핸들..

    Date2003.04.23 CategoryDevelop Byhooni Views7908
    Read More
  11. [css] 화면 스크롤 제어 ㅋㅋ

    Date2003.04.23 CategoryDevelop Byhooni Views8681
    Read More
  12. [php] 배열 관련 함수 설명 ㅎㅎ

    Date2003.04.23 CategoryDevelop Byhooni Views11742
    Read More
Board Pagination Prev 1 ... 88 89 90 91 92 93 94 95 96 97 98 Next
/ 98