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
작성자 : 김도경
수정일자 :
수정자