3. OS이야기

Shell Programming

OSSW(Open Source System SoftWare 2009. 6. 17. 15:23

Shell Program 실행하기

    Shell Program 실행하는 방법

    1. 입력을 재지정(<)하는 방법
        $ sh < myfile
    입력 재지정(<)을 사용하므로 초보자는 사용하기가 어렵다.
    scripts에 매개변수를 제공할 수 없다.

    2. 매개변수로 scripts을 제공하는 방법
       $ sh myfile
    scripts에 매개변수를 제공할 수 있다. 즉,
       $ sh myfile parameters
    3. 실행 의무를 설정하는 방법
       $ ls -l myfile 
    	-rw-r--r       1  kc     other          68  1월 9일 11:15 myfile
       $ chmod a+x 
       $ ls -l myfile 
    	-rwxr-xr-x     1  kc    other          68  1월 9일 11:15 myfile
       $ myfile
    


Shell 변수

    명칭 변수 - 저장된 값이 실행되는 동안 변경될 수 있다.
    Shell 변수 - 텍스트 스트링을 저장.

    Shell 변수

    Shell 변수는 변수에게 할당된 값을 저장한다.
    [형식]
    $ variable_name=variable_value
    Shell 변수를 사용할 때의 주의할 점은 변수명과 변수값 사이의 '='에는 공백이 있어서는 안된다.
       $ name=gdhong   <-- name이라는 변수에 'gdhong'이라는 값을 배정.
       $ name = gdhong  <-- '='기호 전후에 공백이 있음.
             name: 없음         <-- error message 출력
       $
    

    기호 - Shell scripts 내부에서 일반 텍스트 스트링과 구분한다. 즉 $가 붙은 스트링을 변수 를 의미한다. 또한 $를 사용하여 변수의 값을 알아볼 수 있다.

    [형식]
    Shell scripts 내부에서 $varable_name

       $ name=gdhong   
       $ echo   $name
         gdhong
       $
    

    ', "기호 - 변수 내의 공백, 탭, 개행 등을 포함할 때 사용한다.(인용부호)

       $ name="Gildong Hong"
       $ echo  $name 
          Gildong Hong
       $ 
    

    Null String을 참조해도 아무 상관없음

       $ echo  $she is very beautiful.
          is very beautiful.
       $ she=Mary
       $ echo  $she is very beautiful.
          Mary is very beautiful.
       $ 
    
    변수에값에서 ?와 *의 사용
       $ memo=a*
       $ echo "$memo"
          a* 
       $ echo  $memo
          a.html a.sql 
    
    중괄호({,}) - Shell scripts 내부에서 변수명 다음에 스트링이 이어질 때 사용한다.
    [ 형식]
    ${variable_name}string or " $variable_name"string
       $ os=WINDOWS
       $ echo   ${os}95
         WINDOWS95
    
    $ echo " $os"95 WINDOWS95 $

    변수의 삭제

       $ unset memo 
    

    읽기 전용 Shell 변수

    readonly - 읽기 전용 변수로 설정한다. 즉 변수 내용을 다른 것으로 바꿀 수 없다.
    주의) 읽기 전용변수로 설정되면 다시는 쓰기 가능으로 바꾸는 방법은 없다.

    [형식]
       $ readonly variable_name    <-- 읽기 전용 설정
    
       $ readonly     <-- 지정된 읽기 전용 변수의 출력
    
       $ readonly name    <-- 읽기 전용의 설정
       $ name=gdhong    <-- 변수 값의 변경
          name: 읽기 전용임
       $ echo   $name
          Gildong Hong
       $ readonly         <-- 읽기 전용 변수의 출력
         읽기전용 name
       $
    

    Shell 변수 export

    사용자가 지정한 변수는 현재의 Shell에서만 사용 가능하다. export로 표시된 변수는 Shell이 생성한 어떤 명령에도 사용할 수 있다.

    [형식]
       $ export variable_name        <-- export로 표시
    
       $ export                              <-- export 변수의 출력
    
       $ cat  example                    <-- example file의 생성 
       echo    $he likes Mary.
       $ he=John
       $ example
        likes Mary.
       $ export he 
       $ example
        John likes Mary.
       $ 
    
    [예제]
       $ cat extest1     
            cheese=american
            echo "extest1:$cheese"
            subtest
            echo "extest1:$cheese"
    
       $ cat subtest                    
            echo "subtest1:$cheese"
            cheese=swiss
            echo "subtest2:$cheese"
    
       $ extest1                    
            extest1:american
            subtest1:
            subtest2:swiss
            subtest2:american
     
    
       $ extest1 첫 line에 아래 line추가    
            export cheese            -->cheese변수를 subtest에서 사용할 수 있도록 지정 
     
       $ extest1                    
            extest1:american
            subtest1:american 
            subtest2:swiss
            subtest2:american
    

    read

    사용자가 입력한 값을 받아 사용자가 생성한 변수에 저장

    [예제 1]
       $ cat read1      
          echo "Go ahead: \c"
          read firstline
          echo "You entered :$fistline"
     
       $ read1                   
          Go ahead : This is a line
          You entered : This is a line
    
    [예제 2]
    : $filename이 이중인용부호로 쌓여있을 때 *는 확장되지 않음
       $ cat read1_no_quote      
          Go ahead : * 
          You entered : a.sql a.html b.html 
    
    [예제 3]
    :명령을 실행하고 thanks를 표시
       $ cat read2 
          echo "Enter a command : \c"
          read command
          $command
          echo thanks
         
       $ read2 
          Enter a command : who
          gdhong    pts/6       12월 1일  00:00
          sun       pts/10      12월 2일  07:34
          thanks
    

    Shell 변수를 대화형으로 사용하기

    Shell 변수는 대화형 명령 중에서 긴 텍스트 스트링을 저장하는데 유용하게 사용될 수 있다. 자주 사용되는 긴 경로명이나 파일명을 Shell 변수로 지정해 두면 편리하게 사용할 수 있다.

    ex1) Shell 변수를 사용하지 않는 경우
       $ cd /home1/lab/dblab/gwjang/unix
       $ ls 
       $ ls /home1/lab/dblab/gwjang/unix
    
    ex2) Shell 변수를 사용하는 경우
       $ unix=/home1/lab/dblab/gwjang/unix
       $ cd    $unix
       $ ls
    
    $ ls $unix

    자동 Shell 변수

    다음은 변수들은 Shell에 의해서 자동으로 지정된다.
    $?마지막 실행된 명령이 돌려주는 최종값을 포함한다.
    $$Shell의 프로세스 ID를 포함한다.
    $!Shell이 실행시킨 마지막 백그라운드 프로세스의 번호를 포함한다.
    $-Shell이 기동될 때 Shell에 전달된 플래그 또는 set 명령을 사용해 지정된 플래그를 포함한다.
    $#Shell의 매개변수의 수를 포함한다.(Shell 프로그램의 매개변수-링크)
    $*현재 매개변수 리스트를 포함한다. $* = $1, $2, ... 등과 같고 " $*" = " $1, $2, ..."와 같다.
    $@현재 매개변수 리스트를 포함한다. 인용부호없이 $@를 쓰면 공백을 포함하고 있는 매개 변수를 별개의 매개변수로 분리한다. $@= $1, $2, ... 등과 같고 " $@"= " $1", " $2", ... 등과 같다.

    [예제 1]

       $ echo$$     
            2788 
       $ ps                    
            PID   TTY    TIME    COMD
           2740   pts/12  0:00   csh
           2778   pts/12  0:00   sh
    
    [예제 2]
       $ ps &     
          3395 
    $ PID   TTY    TIME    COMD  
        2740   pts/12  0:00   csh
        2778   pts/12  0:00   sh
    
       echo $!  
          3395   
    
    [예제 3]
       $ cat num_args     
            echo "This shell script was called with $# arguments"
          $ num_args a b c
            This shell script was called with 3 arguments
    
    [예제 4]
       $ date      
          2000년 1월 1일 토요일 오전 00시 00분 00초
     
       $ cat dateset   
          set `date`
          echo
          echo "Argument 1: $1"
          echo "Argument 2: $2"
          echo "Argument 3: $3"
          echo "Argument 4: $4"
          echo
          echo $2 $3, $6
    
       $ dateset  
          2000년 1월 1일 토요일 오전 00시 00분 00초
    
          Argument 1:토요일
          Argument 2:1월   
          Argument 3:1일
          Argument 4:00시 00분 00초
         
          1월 1일, 00시
    

    표준 Shell 변수

    사용자는 set 명령을 사용해 모든 현재 변수의 전체 리스트를 볼수 있다.(Shell 프로그램의 매개 변수-링크) 아래의 예는 cosmos의 set 명령의 보기이다.

       $ set 
    

    [중요한 표준 변수 리스트]
    $HOME사용자의 홈 디렉토리명을 포함한다. 로그인시 지정되며, UNIX 파일 시스템 내에 저장된 파일을 액세스할 필요가 있는 프로그램에 의해 사용된다.(.profile, .login, .cshrc, 등)
    $LOGNAME사용자의 로그인 명이다.($USER)
    $MAIL or $MAILPATH 메일 도착을 알고자 할 때 사용된다. 둘 중 하나만 지정되야 한다. $MAIL이 지정되면, 메일이 도착할 파일명이 지정되어야 한다. $MAILPATH가 지정되면, 콜론(:)으로 분리된 메일 파일의 리스트이어야 한다. 이들 변수는 메일 프로그램이 E-Mail을 어디에 놓아야 하는지를 지정하지는 않지만, 새로운 메일이 도착하면 Shell이 어디를 찾아야 하는지를 지정한다.
    $MAILCHECK메일 파일을 검사는 초 단위의 간격
    $SHELL로그인 Shell명이다. vi 텍스트 에디터와 같이 프로그램을 빠져나가지 않고도 또 다른 대화형 Shell을 부르기를 원하는 프로그램에서 사용된다.
    $PS1 Shell이 사용할 첫 번째 프롬프트 스트링이다. 디폴트는 $이다.
    $PS2 두 번째 프롬프트 스트링이다. 명령이 완전히 끝나지 않고 Shell이 또 다른 입력 행을 요구할 때 사용된다. 디폴트는 >이다.
    $TERM 사용자의 터미널 형을 포함한다. vi 같은 어떤 명령은 정확한 결과를 내기 위해 사용중인 터미널의 종류가 무엇인지를 알 필요가 있다.

    검색 경로

    Shell이 사용자의 명령을 어디에서찾아야 하는가에 관한 디렉토리 리스트이다. 대부분의 검색 경 로는 사용자의 홈 디렉토리, /bin, /usr/bin을 포함한다. 이것은 대부분의 실행 명령어들을 bin이라 는 디렉토리 밑에 저장하고 있기 때문이다. 그리고 실행 프로그램들은 이진 파일로 저장되어 있 다. 이러한 검색 경로는 검색할 추가 디렉토리를 설정한다. 만약에 검색 경로 내의 디렉토리에서 명령(파일)이 발견되지 않으면 Shell은 포로그램이 없다는 에러 메시지를 출력한다. 현재 Shell의 검색 경로의 설정은 .profile(Bourne Shell), .cshrc(C Shell)에서 지정할 수 있으며, echo 명령으로 현재 검색 경로를 출력할 수 있다.
    ex) 검색 경로의 출력
       $ echo   $PATH 
        :/usr/bin:/usr
       $ 
    
    검색 경로에서 콜론(:)은 널(null) 디렉토리를 나타낸다. 이것은 현재의 디렉토리를 의미한다.

    비지정 변수

    Shell에서는 지정되지 않은 변수도 사용할 수 있다. 비지정 변수를 사용할 수 있는 방법은 다음과 같다.
    ${varable:-word}variable이 지정되고 널이 아니면 그 값을 사용한다. 그렇지 않으면 word의 값이 사용되고 variable은 변하지 않는다.
    ${varable:=word}variable이 지정되고 널이 아니면 그 값을 사용한다. 그렇지 않으면 word의 값이 variable에 배정되고, 이 새로운 값이 사용된다.
    ${varable:?word} variable이 지정되고 널이 아니면 그 값을 사용한다. 그렇지 않으면 에러 메세지인 word를 출력하고, Shell scripts를 종료한다. word가 생략되면, shell scripts를 종료하기 전에 "parameter null or not set"이라는메세지를 출력한다.
    ${var:+word} variablerk 지정되고 널이 아니면 word로 대치한다. 그렇지 않으면 아무것도 대치하지 않는다.


    $ echo $she likes Jon. likes Jon. $ echo ${she:-Mary} likes John. Mary likes John. $ echo $she likes John. likes John. $ echo ${she:?Error} likes John. she: Error $ echo ${she:+Jane} likes John. likes John. $ echo ${she:=Sue} likes John. Sue likes John. $ echo $she likes John. Sue likes John. $ echo ${she:?Error} likes John. Sue likes John. $

    set명령의 -u 옵션을 지정하면 비지정 변수의 사용을 막을 수 있다.
    ex) 비지정 변수의 사용
       $ echo    $fruit apple
          apple
       $ set -u
       $ echo   $fruit apple
           fruit: 파라미터가 설정되지 않음
       $
    


특수 문자의 인용

    UNIX Shell에서 특수 문자를 인용하는 방법이다.
    백슬래쉬(\)
    백슬래쉬 뒤에 오는 문자를 인용
       $ echo   $HOME
         /home1/lab/dblab/gwjang
       $ echo \$HOME
       $HOME
       $
    

    단일 인용부호(',')
    단일 인용부호로 묶은 문자를 인용. 어떤 해석도 발생하자 않는다.

       $ echo '$HOME'
       $HOME
       $
    

    이중 인용부호(",")
    이중 인용부호로 묶은 문자는 \, ", ", $를 제외하고 인용. 명령과 파라미터 변수 대치가 이중 인 용부호 안에서 발생한다.

       $ echo " $HOME"
         /home1/lab/dblab/gwjang
       $
    
    그렇다면 다음 세 개의 명령의 차이는 무엇일까?
       $ name='Gildong Hong'
       $ name="Gildong Hong"
       $ name=Gildong\ Hong
       $ echo   $name
          Gildong Hong
       $
    

명령 종결 상태

    UNIX 시스템은 프로그램이 성공적으로 실행되면, 0(zero)을 리턴(return)한다. 에러의 경우는 1 또는 2를 리턴한다.
    Name          I/O             File Descriptor
    stdin              input           0
    stdout          output           1
    stderr           error output    2
    user-defined    input/output     3-19
    

    $ pwd /home1/lab/dblab/gwjang $ echo $? 0 <-- 성공적으로 수행 $ ls /test /test: 해당 파일이나 디렉토리가 없음 $ echo $? 2 <-- 에러 $ echo $? 0 $ $?는 마지막 멸령의 종결 상태만을 반영한다.

단순 조건문

    && 연산자
    첫 번째 명령이 성공적(리턴 0)으로 수행될 때에만 실행
       $ ls -l >/dev/null && echo Sucess!
          Sucess!
       $ 
    
    || 연산자
    첫 번째 명령이 실행 실패(0이외의 종결 상태)일 때에만 실행
       $ ls -l test || echo Failed...
        test: 해당 파일이나 디렉토리가 없음
        Failed...
    
    ture : 0의 종결 상태를 리턴
    false : 0 이외의 종결 상태를 리턴
    true와 false는 if, while과 같은 조건문에서 자주 사용된다.
       $ true && echo TRUE
        TRUE
       $ false || echo FALSE
         FALSE
       $
    

단순 명령, 파이프라인, 리스트

    다음은 리스트의 요소를 분리하는 분리자들이다.
    ;       순차실행
    |       파이프 라인 실행
    &      백그라운드 실행
    &&     조건실행(true)
    ||       조건실행(false)
    

    IF 조건문



    [형식 1]
    if [ conditons ] 
    then 
      command_list
    else
      command_list
    fi
    

    [형식 2]
    if [ conditons ] 
    then 
      command_list
    fi
    

    [형식 3]
    if [ conditons ] 
    then 
      command_list
    elif [ conditons ]
    then 
      command_list
    else
      command_list
    fi
    

    ex) 다음은 파일이 존재하면 내용을 보여주고, 그렇지 않으면 파일을 생성한다.
    if [ -r filename ]
    then
      cat filename
    else 
      echo "Enter the data for filename"
      cat > filename
    fi
    


Shell 프로그램 매개변수

    $1은 명령행의 첫 번째 매개변수, $2은 명령행의 두 번째 매개변수, ...를 나타낸다.
    $0는 현재 실행중인 Shell 프로그램을 나타낸다. 다음은 Shell 매개변수를 나타내는 표이다.
    Bourne ShellC Shell설명
    $#$#매개변수의 수
    $0$0명령어 이름
    $1, $2, ...$1, $2, ...매개변수

    $argv[n]매개변수 $1, ...
    $*$*, $argv[*]$1, $2, ...
    $@
    $1, $2, ...
    $-
    set 명령의 Shell options
    $?
    마지막 명령의 리턴 값
    $$$$현재 명령의 프로세스 번호
    $!
    마지막 백그라운드 명령의 프로세스 번호

    ex) 다음은 네 개의 매개 변수를 입력 받아서 출력하는 예이다.
    if [  $# -eq 4 ]
    then
      echo "command is  $0 and arguments are  $1, $2,  $3, $4."
    else
      echo Syntax Error:  $0 arg1 arg2 arg3 arg4
    fi
    

While과 Until 조건 루프


For 문의 형식

    for variable_name in value1 value2 . . .
    do
      action on   $variable_name
    done
    

Case 문


    <형식>
    case $variable_name in 
    value1)
      action1  ;;
    value2)
      action2  ;;
    value3|value4)
      acton3  ;;
      . . .
    *)
      default action  ;;
    esac
    
    "*)"은 default action을 의미한다. match되는 것이 없으면 default action을 수행한다. 그리고 "|" 은 or를 타나낸다.
    ?는 한 문자와 대치될 수 있으며, 대괄호는 문자의 클래스를 정의한다.


Break와 Continue

    break는 while, for, until 등의 loop문에서 loop를 벗어날 수 있도록 해 준다. continue는 loop를 계속 수행할 수 있도록 해준다. 즉 loop내의 다음 반복을 수행한다.

명령 대치

    명령 대치는 명령어의 실행 결과를 변수의 값으로 지정되는 경우이다. 이것은 명령어가 역인용기 호(` : backquote)로 둘러 싸인다. 명령 대치는 Shell 변수에 대한 산술 연산을 수행하는데 자주 사용한다.
       $ today=`date`
       $ echo  $today
         1997년 1월 28일 수요일 오후 07시 13분 27초
       $
    

Shell 대치


    명령어 대치 : `command`
    변수 대치 : $variable_name

Here Documents

    Here documents는 Shell 프로그램 내에서 표준 입력을 일시적으로 재지정하는 데 사용한다.

    [형식]

    command args <<symbol
      . . . documents . . .
    symbol
    

    << 이후의 symbol은 here document의 끝을 나타낸다.

Shell 함수

    Bourne Shell의 약점 중의 하나는 함수가 부족하다는 것이다.
    Shell 함수의 구문은 다음과 같다.
    function_name()
    {
      statements
    }
    
    Shell 함수는 Shell scripts의 맨 위에 정의되어야 한다.

Set - 변수출력과 Shell 운영 모드 지정

    set은 Shell 내부 옵션의 지정을 제어하고, 값을 Shell의 위치 파라미터로 옮기는 역할을 한다.
    set의 옵션
    -e명령이 실패하면 즉시 탈출한다.
    -f파일명 생성을 못하게 한다.
    -n명령을 실행하지 않고 읽는다. 이것은 실제 실행시키지는 않고 Shell 대본의 구문을 테스트하고자 할 때 유용하다. Shell scripts 디버깅 때 자주 사용
    -i대화형 쉘을 실행한다. terminate 신호는 무시된다. interrupt 신호는 받아들였다가 무시되는데, 인터럽트가 되도록 기다리게 한다.
    -t한 명령을 실행한 후 탈출한다.
    -u비지정 변수에 대한 참조를 에러로 한다.
    -vvervose 모드를 설정한다. Shell scripts 디버깅 때 자주 사용
    -x실행될 때 +가 앞에 있는 각 명령을 출력한다. Shell scripts 디버깅 때 자주 사용
    - -v와 -x 디버깅 플래그를 해제한다.
    --플래그 옵션 중의 어느 것도 변경되지 않는다.

Test([, ]) - 조건 평가

    test 명령어는 주어진 이름이 파일이나 디렉토리이면, 그것을 읽을 수 있는지(readable), 쓸 수 있 는지(writable), 실행할 수 있는지(executable) 여부를 결정할 수 있다. 그리고 두 스트링 혹은 수 치(integer)가 보다 큰지(greater than), 보다 작은지(less than), 같은지(equal)를 결정할 수 있다. 또한 test의 특징은 AND, OR, NOT logic을 허락한다.
    test의 옵션
    파일 액세스 테스트
    -b filefile이 블록 특수 파일이면 리턴 True(0)
    -c filefile이 문자 특수 파일이면 리턴 True(0)
    -d filefile이 디렉토리 파일이면 리턴 True(0)
    -f filefile이 보통 특수 파일이면 리턴 True(0)
    -g filefile이 set-group-ID 권한을 가지면 리턴 True(0)
    -h filefile이 기호 링크이면 리턴 True(0)
    -k file file이 스티키(sticky) 비트 지정을 가지면 리턴 True(0)
    -L file file이 기호 링크이면 리턴 True(0)
    -p file file이 이름있는 파이프이면 리턴 True(0)
    -r file file이 읽기 가능이면 리턴 True(0)
    -s file file이 1byte 이상의 길이이면 리턴 True(0)
    -t [n] 파일 기술자 n(n이 제공되지 않으면 1로 간주)이 터미널을 참조하면 리턴 True(0)
    -u file file이 set-user-ID 권한을 가지면 리턴 True(0)
    -w file file이 쓰기 가능이면 리턴 True(0)
    -x file file이 실행 가능이면 리턴 True(0)
    스트링 비교
    -n s1 스트링 s1이 길이가 0 이상이면 리턴 True(0)
    s1 스트링 s1이 널이 아니면 리턴 True(0)
    -z s1 스트링 s1의 길이가 0 이면 리턴 True(0)
    s1 = s2 두 개의 스트링이 같으면 리턴 True(0)
    s1 != s2두 개의 스트링이 같지 않으면 리턴 True(0)
    수치 비교
    -eg 같음 -gt 보다 큼 -ge 크거나 같음
    -ng 같지 않음 -lt 보다 작음 -le 작거나 같음
    논리 연산
    ! NOT -a AND -o OR

Expr - 표현식 평가

    expr 명령은 범용의 정수 산술 프로그램이다. expr은 그 결과가 0이 아니면 참이고, 그 이외에는 거짓을 리턴한다.

    expr 연산자

    expr \| expr 왼쪽 표현식이 널이 아니고 0이 아니면 왼쪽 표현식을 돌려주고, 그렇 지 않으면 오른쪽 표현식을 돌려준다.
    expr \& expr 양쪽 모두의 표현식이 널이 아니고 0이 아니면 왼쪽 표현식을 돌려주 고, 그렇지 않으면 0을 돌려준다.
    expr cmp-op expr비교가 참이면 1을 돌려주고, 그렇지 않으면 0을 돌려주다.
    양쪽 표현식이 모두 수치 비교이고, 그렇지 않으면 텍스트 비교이다.

    \>     =     \>=      \<     !=      \<=
    expr add-op expr두 개의 표현식을 더하거나 뺀다.
    +    -
    expr mul-op expr곱하고 나누거나 나머지를 계산한다.
    \*      /      %
    expr : regexp 고정 스트링인 expr과 다음 만능문자를 포함할 수 있는 정규식인 regexp를 비교한다.
    .      어떤 한 문자와도 부합한다.
    $      검색을 스트링의 끝에 한정한다.
    [list]      리스트 내의 어떤 한 문자와도 부합한다.
    *      선행하는 한 문자 정규식의 0 이상의 것과 부합한다.
    \(\)     부합의 괄호 부분을 돌려준다. 이 옵션이 없으면, 결과는 부합 하는 길이이거나 부합되는 것이 없다는 의미의 0 중의 하나이다.

    $ tty
        /dev/pts9
    $  expr `tty` : ".*\(.\)\$"
        9
    $
    


Ulimit - 자원 제한의 지정과 출력

    ulimit 명령은 여러 자원의 제한을 지정한다.
    Ulimit의 옵션
    -a제한 리스트 보기
    -H강한 제한 지정
    -S약한 제한 지정(default)
    -c512byte 블록 단위의 최대 코어 덤프 파일 크기
    -dKbyte 단위의 최대 데이타 세그먼트 크기
    -fKbyte 단위의 최대 파일 생성 크기
    -n파일 지시자의 최대 수
    -sKbyte 단위의 최대 스택 세그먼트 크기
    -t초 단위의 최대 CPU 시간
    -vKbyte 단위의 최대 가상 기억장치 크기

    $ ulimit -a
         시간(초) 무제한
         파일(블럭) 무제한
         데이타(킬로바이트) 2097148
         스택(킬로바이트) 8192
         코어덤프(블럭) 무제한
         nofiles(설명자) 64
         메모리(킬로바이트) 무제한
    $
    


getopts - scripts에서의 옵션 관리

    getopts 명령은 옵션 플래그에 대해 System V 표준을 따르는 Shell 대본을 만든다. getopts 명령 은 두 개의 매개변수를 요구한다. 옵션 플래그의 리스트와 현재의 옵션 플래그가 저장될 변수이 다.


Bourne Shell의 내장 명령

    Shell 내장 명령

    :아무 일도 하지 않는다.
    .filefile에서 현재 Shell로 명령을 읽어들인다. ..profile을 입력하면 .profile이 실행된다.
    break[n]루프를 벗어난다. n이 지정되면 n레벨에서 벗어난다.
    continue [n]루프를 계속한다. n이 지정되면 n번째 외부 루프를 계속한다.
    cd [dir]홈 디렉토리로 이동하거나, 지정된 dir로 이동한다.
    echo [arg...]매개변수를 출력한다.
    eval cmd...cmd 내의 매개변수를 재평가한다. 이것은 Shell에게 강제로 다른 대치를 취해 매개변수 리스트로 전달한다.
    exec cmd...현재 실행중인 Shell의 위치에서 cmd를 실행한다. 이것은 현재 Shell을 새로운 프로세스로 대치하도록 하는 것으로, 사용자가 다른 Shell 또는 사용자 인터페이스로 전환할 수 있도록 한다.
    exit [n]n이 지정되면 n 종결 상태로 벗어난다.
    export [var...]매개변수가 없으면 새로운 환경 변수를 출력하고, 매개변수가 있으면 그들 변수는 export되는 것임을 나타낸다.
    newgrp [arg]exec newgrp arg와 동일하나, newgrp를 실행시켜 사용자를 새로운 Shell의 실행으로 생긴 새로운 그룹에 등록한다.
    pwd현재 디렉토리명을 출력한다.
    read var ...표준 입력에서 한 행을 읽는다.
    readonly [var...]읽기 전용 변수의 설정 및 리스트를 출력한다.
    return [n]종결 상태를 n으로 돌려주면서 함수에서 벗어난다.
    set [-op][arg...]Shell 옵션을 지정한다.
    shift [n]매개변수를 한 위치 또는 n위치 아래로 이동시킨다.
    test args ...표현식을 테스트한다.
    time 실행 시간을 출력한다.
    trap [cmd][n]...신호 n이 도착하면 cmd를 실행한다. cmd 텍스트는 두 번 조사된다. 가장 좋은 신호 처리기는 Shell 함수이다. cmd가 없으면, 신호 n은 디폴트로 재지정된다. cmd가 널이면 신호 n은 무시된다. n이 0이면 scripts에서 벗어난 곳에서 cmd가 실행된다.
    type [name ...]name이 어떻게 명령으로서 사용되는가를 출력한다. type ls는 ls is /usr/ls를 출력한다.
    ulimit args자원 제한을 지정한다.
    umask [nnn]생성 비트 마스크를 지정하고 출력한다. umask 022는 생성되는 파일과 디렉토리에 대하여 그룹과 다른 사람에게 쓰기를 허용하지 않는다.
    unset [name ...]지정된 변수 또는 함수의 지정을 해제한다.
    wait [n]PID가 n인 백그라운드 프로세스가 끝날 때까지 기다리거나 모든 백그라운드 프로세스가 끝날 때까지 기다린다.

    출처 : http://unix.co.kr/bbs/board.php?bo_table=02_11&wr_id=3

'3. OS이야기' 카테고리의 다른 글

HP core 파일 분석  (0) 2009.10.07
lsof 툴 다운로드  (0) 2009.09.29
rar처럼 tar로 분할 압축 하는 방법  (0) 2009.06.03
tar로 묶으면서 gzip으로 압축하는법  (0) 2009.06.03
AIX 업로드 속도관련 Network Kernel  (0) 2009.06.03