Subject : UNIX C-SHELL PROGRAMMING 기법(1)

Description :


CONTENTS:

 1. C-SHEEL이란
 2. UNIX SHEEL의 주요 특성
 3. C-SHEEL의 용도
 4. SHELL의 종류
 5. SHELL 명령어와 명령어 FILE
 6. SHELL SCRIPT작성시 주의 사항
 7. SHELL SCRIPT의 수행
 8. shell script 변수
 9. temporary file의 사용
10. shell script 제어문
11. 반복 제어문의 종류
12. 인수 list 처리
13. 환경 변수의 사용(변수명은 대문자)
14. 기정 변수의 사용 (set으로 내용 검색)
15. shell 변수의 특성
16. 문자 single(') 와 double(") 와 backword apostroples(') 사이의 차이점
17. shell 변수를 사용한 산술 연산
18. shell script의 debugging
19. 명령어의 대체
20. 명령어 집단화에 유용한 문자및 명령
21. BACKGROUND 상태에서 PROCESS수행
22. 사용자 process의 실행 순위의 조정
23. 수행중인 process의 정지와 재 수행
24. C-SHELL를 이용한 PROGRAM 예
25.일반적인 UNIX 명령들


DESCRIPTION:

 1. C-SHEEL이란
   . 사용자 interface이다.
   . 어떤 특정한 상태가없다.
   . C-PROGRAM언어와 유사한 구문을 갖는 강력한 명령언어를 제공한다.
   . UNIX의 사용을 휠씬 쉽게 해준다.
   . utility, 특정 사용자 interface와 process FILE, 심지어는 범용 program 마저도
     신속하게 개발할 수 있도록 한다.


 2. UNIX SHEEL의 주요 특성
  (1) .cshrc .login .logout같은 특수FILE을 사용하여 자신의 session을 취향에 맞도록 수정할수
       있다.
  (2) HISTORY기능을 쓰면 명령을 다시 실행할 수 있으며 ALIAS를 쓰면 연속된 명령을 다른 이름
      으로 사용할수있다.
  (3) SHEEL변수를 쓰면 연속되는 명령에서 긴문자를 재사용 할 수 있도록 저장할 수있다.
      입출력 방향전환, 명령GROUP, 명령 치환 등은 명령을 구성하기 위한 C-SHEEL의
      기본요소다.
  (4) UNIX의FILE SYSTEM은 계층적 구조를 가지고있다. FILE을 지정하는 것은 현재 DIRECTORY나
      ROOT DIRECTIRY로 시작하는 경로이름을 사용한다.
  (5) C-SHEEL은 프로그램 언어이다. 새로운 도구를 창조해 내는것은 C-SHEEL SCRIPT,C-SHEEL
      명령, PROGRAM구조, ERROR검사, 입출력 명시등을 포함하는 TEXT FILE의 작성을 통해서
      이루어진다.


 3. C-SHEEL의 용도
    다음 3가지 방법으로 사용할 수있다.
  (1) 대화적으로 UNIX명령을 실용하기 위해
  (2) 개인화에서 작업 환경을 정의하기위해
  (3) PROGRAM에서 C-SHEEL PROGRAM같은 새로운 도구를 생성하기위해


 4. SHELL의 종류
  (1) C-SHELL(csh) : C PROGRAM언어로 부터 그구조와 이름이 유래됨
  (2) UNIX 표준 BOURNE SHEEL (sh)
  (3) UNIX V BOURNE SHELL (sh5)
  (4) KORN SHELL (ksh) : BOURNE SHELL로 부터 유래된 최근의 SHELL


 5. SHELL 명령어와 명령어 FILE
  (1) PROFILE과 .profile 명령 FILE
    모든 사용자에게  적용되는 SHELL명령  FILE은 /etc/profile인데  사용자가 login하여  사용자의 
    directory의 명령 file을  수행하기 전에 실행하도록 system  관리자가 기본적으로 설정한 명령
    file이다.각 사용자는 etc/profile을 수행한후 자신이 설정한 명령 file을 login한후 바로 실행 
    시킬수 있는데 .profile에 명령을 설정하면 된다.

      (예) .profile FILE
      tty -s
      if test $? = 0
      then
              stty dec crt
      fi
      PATH=.:$HOME/bin:/usr/ucb:/bin:/usr/bin:/usr/local:/usr/new:/usr/hosts
      MAIL=/usr/spool/mail/$USER
      tset -n -I
      export TERM MAIL PATH
      biff n

  (2) .cshrc 명령어 file (c-shell만 사용)
    다양한 경로의 변경이나 전체에 영향을 미치는 alias값등의 설정을 변경하려는 명령을 지정하는
    데 사용하는 file이다.
    .cshrc file은 HOME DIRECTORY에 존재하여 C-SHELL에 의해 해석된다. 이 FILE은 SHELL  SCRIPT를 
    효율적으로 사용 할 수 있도록 변수 할당, ERROR CODE와 같은 진보된 기능을 위해 이용된다.

    (예) .cshrc FILE
      if ($?prompt) then
              set prompt = "csh> "
              set notify
              set history = 50
              set term = vt100
              alias h history
              alias gc setenv GKS3Dconid basic002:0.0
              alias ung unsetenv GKS3Dconid
              alias unws unsetenv GKS3Dwstype
              alias gpr setenv GKS3Dconid /dev/tty01
              alias gp setenv GKS3Dwstype %x10500033
              alias gl setenv GKS3Dwstype %x00500033
              alias isl4 setenv GKS3Dwstype %x0070003d
              alias l "pwd;ls -F"
              alias pd pushd
              alias pop popd
              alias help apropos
              alias vt52 "set term = vt52"
              alias ti745 "set term = ti745 ; stty -tabs"
              alias ti785 "set term = ti745 ; stty -tabs"
              alias vt100 "set term = vt100"
              alias _dry cd /usr/skb/dry_source
              alias _opti cd /usr/skb/dry_source/opti
              alias _daed cd /usr/skb/dry_source/contact
              alias _marpol cd $HOME/sd9112/marpol
              alias _source cd $HOME/../source/sikob_source
              alias dryrun /usr/skb/dry_source/rev3/dryrun
              alias gendat  /usr/skb/dry_source/rev3/gendat
              alias profile /usr/skb/dry_source/rev1/profile
              alias prelikon cd /usr/sbdd1.users/sikob/source/prelikon
              alias pkdata cd /usr/sbdd1.users/pkdata
              alias hpgl "echo '||e5' > /dev/tty01;setenv GKS3Dconid /dev/tty01"
              alias lo 'echo -n "From> ";set w = $<; find $w -name \!* -print;unset w'
      #            alias  cd 'cd  \!*;set  cwdd="$cwd:t";if($cwdd  == ''  )  set  cwdd='/';set 
      prompt="`hostname` SIKOB[$cwdd]> "'
              alias cd 'cd \!*;set prompt="SIKOB [`dirs`]>"'
      endif
  (3) .login 명령어 file (c-shell만 사용)
    만약 login shell이 c-shell이면 HOME DIRECTORY 내에 존재하는 .login FILE을 읽은후  그내용을 
    순서대로 실행시킨다.
    .login FILE에는 많은 명령이 있으나 특히, SHELL 자체에 대한 설정 명령 SET가 많이 있다.

      (예) .login FILE
      stty dec new cr0
      tset -I -Q
      umask 022 
      setenv MAIL /usr/spool/mail/$USER
      set mail=$MAIL
      set   path=(.  $HOME/bin   /usr/ucb  /bin   /usr/bin  /usr/local   /usr/new   /usr/hosts 
      /usr/users/sikob/bin/skcpl)
      set prompt="SIKOB > "
      setenv EXINIT 'set redraw wm=8'
      setenv DECFORT_FFRLIB "T"
      biff n
      date

  (4) .logout 명령어 file (c-shell만 사용)
    logout명령을 수행 시키면 file logout에 저장된 명령을 실행 시킨다.

      (예) .logout FILE
      #
      # default cadds user logout script
      #
      # 24-Jun-86 HPS; 'oplog off' is commented out
      # 25-mar-86 jaf; moved
      # 11-mar-86 aws; created
      ######################################################################
      #
      #oplog off
      #clear
      cal


 6. SHELL SCRIPT작성시 주의 사항
  (1) 첫번째 LINE 첫 COLUME은 #! 로시작하며 그내용을 읽는 사람이 알기 쉽도록 SHELL SCRIPT를
      수행하는 SHELL의 경로명을 적는다.
  (2) SHELL SCRIPT는 보통 작성자가 쉽게 간과해버는 주석에 대해 강조하여 작성한다.
  (3) 주석은 #으로 시작하며 SHELL에 의해 명령어로 해석되지 않는다. 하지만 만일의 경우
      명령어로 해석되것을 방지 하기 위해 # 다음에 QUOTATION MARK로 문자을 열고 닫는다.
  (4) 명령어를 적은후 동일 LINE에 #으로 시작하는 주석을 IN LINE COMEND라고 하며 명령어의
      마지막에 ;을 사용하여 명령어와 IN-LINE COMEND와 분리 한다.
  (5) ECHO 명령은 ECHO 명령 다음의 명령과 함께 출력하는데 유용하게 사용된다.


 7. SHELL SCRIPT의 수행
  ① SUB-SHELL을 수행 시킨다.
  ② 사용자의 현재 SHELL내에서 SCRIPT를 수행 시킨다.
  ③ SCRIPT를 수행 가능하게 만든다.

  (1) SUB-SHELL의 수행
   
        BOURNE SHELL의 경우 : sh 
        C-SHELL 의 경우 : csh 

  (2) 사용자의 현재 shell내에서 script 수행
   
  	source 


 8. shell script 변수
  (1) 변수명 부여시 주의 사항
    ① 변수의 이름은 문자로 시작한다.
    ② 변수는 문자, 숫자, 밑줄로 구성한다.
    ③ 길이는 20자까지 제한한다.

  (2) 변수에 값할당/해제
    변수에 값을 할당하는 문자 = 를 사용하고 앞뒤에 공백이 없어야한다.
 
  설정
   
	set <변수명> = <값>
	       	  * 값이 문자열인 경우 " " double quotation 사용

  해제
   
	$ unset <변수명>

  (3) 변수값 출력
   
   echo $ <변수명>
   echo " "
   echo <단어>

  (4) read문장을 이용한 값할당
    표준 입력 (key board)로 입력을 받아 변수에 값을 직접 할당
   
  read <변수명> = $<

Revision History

작성일자 : 96.06.14
작성자 : 김도경

수정일자 : 
수정자