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

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:

 19. 명령어의 대체
  1) 명령어의 변수 할당
   
         korn shell의 경우		 c-shell의 경우

  typeset <변수명> = $(<명령어>)     set <변수명> = <'명령어'>


  2) 명령어의 대체
    명령어를 변수에 할당하여 명령어의 인수로 사용하는 것이 아니라 명령어의 인수로 명령어를  사
    용하여 대체하여 해석된후 수행한다.


 20. 명령어 집단화에 유용한 문자및 명령
   
문자및 명령		 결과 및 설명

ECHO <명령열>		 출력에 <문자열>이 표시

      ;			 명령어와 명령어 구분

      \			 명령이 한 LINE을 초과할경우 연결

     ( )		 명령어 GROUP을 표시

     " "		 ()와 같이 C-SHELL에 명령어 GROUP을 표시하여 해석하도록함



 21. BACKGROUND 상태에서 PROCESS수행
  1) BACKGROUND 상태에서 입력되는 보통의 명령어와 관계 없이 PROCESS를 수행 시키는 곳을
     말한다.
     
  	<수행시킬 명령어> &

      * 수행후 "[작업번호] PROCESS번호 " 의형식으로 MESSAGE가출력된다.

  2) login shell의 종료
     init process 는 system을  시작했을때 수행이 시작되며 system관리자나 consol에 의해  관리되
     고 책임을 갖게된다.
     사용자가 logout하면 login shell과 함께 background에서 수행되는 process가 종료되는것이  아
     니라 background process의 부모 process를 login shell에서 init process로 옮겨 할당된다.
  3) background작업의 표준 입력
     .login file에서 set  notify로 설정하면 backgound 작업중에 system에서 대화식으로  요구되는 
     입력을 할 수 있게된다. 즉,  background작업중 표준 입력 (key board)로 부터 입력을 해야 할 
     경우 system에서 message를 출력하여 입력을 요구하며 입력이 되면 계속 수행된다.
      
  	fg <작업 번호>


  4) sleep명령어
     지정한 시간동안 명령어의 수행을 일시 정지 시키는 명령어
      
 	 sleep <시간 : 숫자>; <수행 명령어> &



 22. 사용자 process의 실행 순위의 조정
  보통의  명령보다 낮은  실행 순위로  명령을 수행  시키면 긴  처리 시간후에  완료된다.  보통의 
  process는 0의 실행 순위를 갖으며, -20~20까지의 범위에서 설정 할 수 있다.
 
         nice <실행순위> <수행명령어> &


  다음은 유용하게 사용되는 실행 순위이다.
   
   실행 순위	 설         명

      +19	 process가 매우 느리게 수행된다.

      +10	 nice명령어의 실행 순위를 지정하지 않을때 기본 실행 순위

       0	 보통 작업의 실행 순위

   -1 ~ -20	 system관리자만 설정 할수있는 실행순서로  process를 빠르게 
		 수행시킨다.



 23. 수행중인 process의 정지와 재 수행
  jobs명령은 작업 번호에 의해서 작업의 list를 출력 시킨다.

  작업 제어 명령어
   
       명령어		 설                 명

	<명령어> &	 background에서 명령어나 작업을 수행

	jobs		 정지상태나  수행중인 작업  번호를  활동  상태의 작업 
			 list 출력

	stop<작업번호>   지정한 background작업의 정지

	Ctrl+Z		 현재 수행중인 foreground작업의 정지

	Kill PID	 PID번호에 의해  작업을 TERM/sjg로  이름지어진 번호를 
		         보내면서 정지

	Kill-l		 작업 정지 신호의 list

	bg <작업번호>	 background작업을 계속 수행

	fg <작업번호>	 foreground 작업을 계속 수행


 24. C-SHELL를 이용한 PROGRAM 예
     (cadds file backup용)

  #
  # default backsrc script
  #
       set io = "tar: read error: I/O error"
       while(1)
       set d = `date`
       echo ' '
       echo ' '
       echo " DATE : "$d[6]. $d[2]. $d[3]. 
       echo " TIME : "$d[4]
       echo ''
       echo ' ******************************************************'
       echo '    CREATE TAPE ARCHIVES, AND ADD OR EXTRACT FILES'
       echo ' ******************************************************'
       echo ''
       echo '   ************************************************'
       echo '   *      1. file list for m.t                    *'
       echo '   *      2. back up (work station ===> m.t)      *'
       echo '   *      3. restore (m.t ===> work station)      *'
       echo '   *      4. exit                                 *'
       echo '   ************************************************'
       echo ''
       echo -n '     WHAT DO YOU WANT TO EXECUTE ? ---- NO. : '
       set test = $<
       echo ''

  if ($test) then
     if($test == 1) then
       mt -f /dev/rst0 rewind
       while(1)
       echo ' ******************************************************'
       echo ' *      Display table of contents of the archive      *'
       echo ' ******************************************************'
       echo ''
       tar -tvf /dev/nrst0 
       echo -n '     Continue ("y"/"n") ....................: '
       set cont = $<
       if($cont == n) break
       end
     else if ($test == 2) then
       while(1)
       echo ''
       echo ' *******************************************'
       echo ' *               BACKUP MODE               *' 
       echo ' *******************************************'
       echo ''
       echo -n '     INPUT (file & directory) ............. : '
       set fldir = $<
       tar -cvf /dev/nrst0 $fldir
       echo -n '     Continue ("y"/"n") ....................: '
       set cont = $<
       if($cont == n) break
       end
   

     else if ($test == 3) then
       mt -f /dev/rst0 rewind
       while(1)
       echo ''
       echo ' *******************************************'
       echo ' *              RESTORE MODE               *'
       echo ' *******************************************'
       echo ''
       echo -n '     INPUT (skip over the end of file).... : '
       set skip = $<
       mt -f /dev/nrst0 fsf $skip
       echo -n '     INPUT (file & directory) ............. : '
       set fldir = $<
       tar -xvf /dev/nrst0 $fldir
       echo -n '     Continue ("y"/"n") ....................: '
       set cont = $<
       if($cont == n) break
       end
     else if ($test == 4) then
       break
  endif
  end
  mt -f /dev/rst0 rewind
       echo '     *****  END OF BACKUP/RESTORE C-SHEEL  ***** '

26.일반적인 UNIX 명령들
  (1) FILE과 DIRECTORY 관리 명령
    .cat
    .cd,cddir
    .chmod
    .cp
    .file
    .find
    .head
    .ln
    .ls
    .mkdir
    .more
    .mv
    .rm
    .rmdir
    .tail
    .tee

  (2) TEXT 처리명령
    .awk ; Aho,Weinberger,Kernighan ;text에서 패셴을 찾고 어떤동작을 행한다.
    .diff
    .ex
    .grep
    .lpr
    .nroff
    .pr
    .sed
    .sort
    .spell
    .split
    .tr
    .vi
    .wc

  (3) SYSTEM상태의 명령
    .date
    .du
    .env  : 현재의 환경변수를 display
    .id
    .kill
    .mail
    .news
    .ps
    .pwd
    .stty
    .tset
    .tty
    .who
    .write

  (4) SOFTWARE 개발명령
    .ar  : 저장및 라이브러리 관리
    .cb  : C beautifier
    .cc  :
    .cmp
    .nm
    .od
    .size


Revision History

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

수정일자 : 
수정자