5 Korn 5 2 Shell Bourne 1 etcprofile
5. Korn 셀
5. 2 시작하기 (화일들) Shell 모든사용자 사용자별 Bourne 1. /etc/profile 2. $HOME/. profile Korn 1. /etc/profile 2. $HOME/. profile ENV=$HOME/. kshrc 3. $HOME/. kshrc C 1. /etc/. login 2. $HOME/. cshrc 3. $HOME/. login 4. $HOME/. logout 5. Korn 셀 6
5. 3 별명(Aliases) u 내장 l 명령어의 별명 case, done, elif, esac, fi, for, function, if, select, then, time, until, while, {, } 을 제외한 모든 내장 명령어 들은 별명이 될 수 있다. u 별명제거 l unalias {word}+ 5. Korn 셀 8
5. 3 별명(Aliases) u 미리 정의된 별명 별명 false function history integer u 유용한 값 let 0 typeset -’ fc -l typeset -I 별명 r true type hash 값 fc -e | whence -v alias -t 별명 rm = ‘ rm -I ’ ls = ‘ ls -a. F ’ mv = ‘ mv -I ’ env = ‘ printenv | sort ’ 5. Korn 셀 9
5. 8 메뉴(select) (예) echo menu test program select reply in “date” “exit” do case $reply in "date") date ; ; “exit”) break ; ; esac done 5. Korn 셀 # display date. # exit 27
5. 9 함수 Continue. . . function name { list of commands } name ( ) { list of commands } 5. Korn 셀 28
5. 9 함수 (예) $ cat func 1. ksh message ( ) { echo hello } I=1 while (( I <= 2 )) do message let I=I+1 done $ func 1. ksh hello 5. Korn 셀 29
5. 9 함수 u 매개변수 사용 (예) $ cat func 2. ksh f( ) { echo parameter 1 = $1 #display first parameter echo parameter list = $* #display entire parameter list } f cat dog goat $ func 2. ksh parameter 1 = cat parameter list = cat dog goat 5. Korn 셀 30
5. 9 함수 (예) $ cat func 3. ksh f( ) { (( return. Value = $1 * $2 )) return $return. Value } # main program f 34 # call function result=$? # save exit code Echo return value from function was $result $ func 3. ksh return value from function was 12 5. Korn 셀 32
5. 11 개선점 (예) $ date |& [1] 8311 $ read -p the. Date . . . 자식 프로세서 시작 …자식 프로세스의 표준 출력에서 읽기 [1] + Done date |& … 자식 프로세스 종료 $ echo $the. Date … 결과 표시 sun May 10 21: 36: 57 CDT 1992 (예) $ echo there are $( who | wc -l ) users on system there are 6 users on the system 5. Korn 셀 41
5. 11 개선점 u 변수 l 미리 정의된 지역 변수 $_ $RANDOM $COLUMNS $HISTFILE $MAILPATH (예) $ echo hi there $ echo $_ there $ echo $PPID $REPLY $EDITOR $HISTSIZE $PS 3 $PWD $SECONDS $ENV $LINES $TMOUT $OLDPWD $CDPATH $FCEDIT $MAILCHECK $VISUAL …이전 명령의 마지막 인수 표시 …셀의 부모 프로세스 id 번호 표시 27709 5. Korn 셀 43
5. 11 개선점 (예) $ cat squares. ksh … list the script I=0 while (( I < 10 )) do (( aquares[$I] = I * I )) …각 원소의 값 지정 (( I = I + 1 )) …반복 계수 값 증가 done echo 5 squared is ${squares[5]} …한 원소의 값 표시 echo list of all squares is ${squares[*]} …모든 원소의 값 표시 $ squares. ksh echo 5 squared is 25 echo list of all squares is 0 1 4 9 16 25 36 49 64 81 5. Korn 셀 45
5. 11 개선점 (예) $ cat justify. ksh word. List[0]=‘ jeff ’ # set three elements. word. List[1]=‘ john ’ word. List[2]=‘ ellen ’ typeset -u. L 7 word. List # typeset all elements in array. echo ${ word. List[*] } # Shell removes non-quoted spaces echo “ ${word. List[*] } ” # works OK $ justify. ksh JEFF JOHN ELLEN 5. Korn 셀 48
5. 11 개선점 ( 예) 121 $ print -u 2 hi there 122 $ print -s echo hi there 124 $ r 123 echo hi there 125 $ print -R -s hi there ( 예) $ read ‘ name? enter your name ’ enter your name Graham $ echo $name Graham 5. Korn 셀 …출력을 표준 에러 채널로 전송 … 출력을 history의 끝에 덧붙임 … 명령어 #123 을 다시 호출 52
5. 11 개선점 ( 예) $ cat trap. ksh f() { echo ‘ enter f ( ) ‘ trap ‘ echo leaving f … ’ EXIT echo ‘ exit f ( ) ’ } # main program. trap ‘ echo exit shell ’ EXIT f $ trap. ksh enter f ( ) exit f ( ) leaving f … exit shell 5. Korn 셀 # set a local trap # set a global trap # invoke the function f ( ) … 지역 EXIT 가 트랩됨 … 전역 EXIT 가 트랩됨 54
- Slides: 57