3. Bourne Shell Programming Lanuguage
Shell은 대화형 명령어 인터프리터(interpreter)이고, 강력한 프로그래밍 언어이다.
3.1. Shell의 선택
(1) 대화형 Shell로 C Shell
-. 입력된 명령을 쉽게 수정 가능
-. 많은 태스크들을 백그라운드로 작업제어 가능
(2) Shell Scripts로 Bourne Shell
-. UNIX 시스템의 최초의 Shell
-. 프로그래밍 언어의 용도로 개발
(3) 용어 정리
-. Shell Scripts : 간단한 Shell Program.
-. Shell Program : 텍스트 파일에 저장된 UNIX 시스템의 명령의 집합.
(4) Shell Program Language라 부르는 이유
-. 변수를 가진다.
-. 조건과 반복 구조를 가진다(if-then-else, case, do, while, until)
-. 사용자가 편집할 수 있는 환경을 가진다.
3.2 Shell Program 실행하기
(1) 입력을 재지정(<)하는 방법
-. 입력 재지정(<)을 사용
-. sh < myfile
-. scripts에 매개변수를 제공할 수 없다.
(2) 매개변수로 scripts을 제공하는 방법
-. sh myfile
-. sh myfile parameters
-. scripts에 매개변수를 제공 가능
(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 |
3.3 Shell 변수
(1) Shell 변수
-. 저장된 값이 실행되는 동안 변경될 수 있다.
-. Shell 변수는 변수에게 할당된 값을 저장한다.
-. 변수명과 변수값 사이의 '='에는 공백이 있어서는 안된다.
형식 variable_name=variable_value |
bsh prompt에서 실행해 보면 $ name=gdhong <-- name이라는 변수에 'gdhong'이라는 값을 배정. $ name = gdhong <-- '='기호 전후에 공백이 있으므로 error message 출력. name: 없음 |
(2) Shell 변수에 사용되는 $ 기호
-. Shell scripts 내부에서 일반 텍스트 스트링과 구분하여 처리
-. 변수 : $가 붙은 스트링
-. 변수의 값 출력 : echo와 $ 사용
형식 Shell scripts 내부에서 $varable_name |
bsh prompt에서 실행해 보면 $ name=gdhong
$ echo $name
|
(4) Shell 변수에 사용되는 ' 또는 "기호
-. 변수 내의 공백, 탭, 개행 등을 포함할 때 사용한다.(인용부호)
bsh prompt에서 실행해 보면 $ name="Gildong Hong"
$ echo $name
|
(5) Null String을 참조해도 아무 상관없음
bsh prompt에서 실행해 보면 $ echo $she is very beautiful.
$ she=Mary
$ echo $she is very beautiful.
|
(6) Shell 변수에 사용되는 중괄호({,})
-. Shell scripts 내부에서 변수명 다음에 스트링이 이어질 때 사용한다.
형식 ${variable_name}string or " $variable_name"string |
bsh prompt에서 실행해 보면 $ os=WINDOWS
$ echo ${os}95
$ echo " $os"95
|
(7) 읽기 전용 Shell 변수
-. 설정 : readonly
-. 변수 내용변경 불가능
-. 읽기 전용변수로 설정되면 다시는 쓰기 가능으로 바꿀 수 없다.
형식 readonly variable_name <-- 읽기 전용 설정 readonly <-- 지정된 읽기 전용 변수의 출력 |
Bsh prompt에서 실행해 보면 $ readonly name <-- 읽기 전용의 설정
$ name=KIM
$ readonly
|
(8) Shell 변수 export
-. 사용자가 지정한 변수는 현재의 Shell에서만 사용 가능하다.
-. export로 표시된 변수는 Shell이 생성한 어떤 명령에도 사용할 수 있다.
형식 $ export variable_name <-- export로 표시 $ export <-- export 변수 출력 |
bsh prompt에서 실행해 보면 $ cat > example <-- example file의 생성 echo $he likes Mary. Ctrl+d $ he=John
$ chmod a+xexample $ example
$ export he
$ example
|
(9) Shell 변수를 대화형으로 사용하기
-. Shell 변수는 대화형 명령 중 긴 텍스트 스트링을 저장하는데 유용하게 사용가능
-. 자주 사용되는 긴 경로명이나 파일명을 Shell 변수로 지정해 두면 편리
예제1. Shell 변수를 사용하지 않는 경우 $ cd /home1/lab/dblab/gwjang/unix $ ls $ ls /home1/lab/dblab/gwjang/unix |
예제2. Shell 변수를 사용하는 경우 $ unix=/home1/lab/dblab/gwjang/unix $ cd $unix $ ls $ ls $unix |
(10) 자동 Shell 변수
변수 |
설 명 |
$? |
마지막 실행된 명령이 돌려주는 최종값을 포함한다. |
$$ |
Shell의 프로세스 ID를 포함한다. |
$! |
Shell이 시킨 마지막 백그라운드 프로세스의 번호를 포함한다. |
$- |
Shell이 기동될 때 Shell에 전달된 플래그 또는 set 명령을 사용해 지정된 플래그를 포함한다. |
$# |
Shell의 매개변수의 수를 포함한다.(Shell 프로그램의 매개변수-링크) |
$* |
현재 매개변수 리스트를 포함한다. $* = $1, $2, ... 등과 같고 " $*" = " $1, $2, ..."와 같다. |
$@ |
현재 매개변수 리스트를 포함한다. 인용부호없이 $@를 쓰면 공백을 포함하고 있는 배개 변수를 별개의 매개변수로 분리한다. $@= $1, $2, ... 등과 같고 " $@"= " $1", " $2", ... 등과 같다. |
(11) 표준 Shell 변수
-. 사용자는 set 명령을 사용해 모든 현재 변수의 전체 리스트를 볼수 있다.
-. Shell 프로그램의 매개 변수-링크
-. 중요한 표준 변수 리스트
변수 |
설 명 |
$HOME |
. 사용자의 홈 디렉토리명을 포함한다. . 로그인시 지정되며, UNIX 파일 시스템 내에 저장된 파일을 액세스할 필요가 있는 프로그램에 의해 사용된다. . .profile, .login, .cshrc, 등에서 사용 |
$LOGNAME |
. 사용자의 로그인 명이다.($USER) |
or $MAILPATH |
. 메일 도착을 알고자 할 때 사용된다. . 둘 중 하나만 지정되야 한다. . $MAIL이 지정되면, 메일이 도착할 파일명이 지정되어야 한다. . $MAILPATH가 지정되면, 콜론(:)으로 분리된 메일 파일의 리스트이어야 한다. . 이들 변수는 메일 프로그램이 E-Mail을 어디에 놓아야 하는지를 지정하지는 않지만, 새로운 메일이 도착하면 Shell이 어디를 찾아야 하는지를 지정한다. |
$MAILCHECK |
. 메일 파일을 검사하는 초 단위의 간격 |
$SHELL |
. 로그인 Shell명이다. . vi 텍스트 에디터와 같이 프로그램을 빠져나가지 않고도 또 다른 대화형 Shell을 부르기를 원하는 프로그램에서 사용된다. |
$PS1 |
. Shell이 사용할 첫 번째 프롬프트 스트링이다. 디폴트는 $이다. |
$PS2 |
. 두 번째 프롬프트 스트링이다. . 명령이 완전히 끝나지 않고 Shell이 또 다른 입력 행을 요구할 때 사용된다. . 디폴트는 >이다. |
$TERM |
. 사용자의 터미널 형을 포함한다. vi 같은 어떤 명령은 정확한 결과를 내기 위해 사용중인 터미널의 종류가 무엇인지를 알 필요가 있다. |
(12) 검색 경로
-. Shell이 사용자의 명령을 어디에서찾아야 하는가에 관한 디렉토리 리스트
-. 대부분의 검색 경 로는 사용자의 홈 디렉토리, /bin, /usr/bin을 포함
이유 : 실행 명령어들을 bin이라 는 디렉토리 밑에 저장하고 있기 때문에
-. 검색 경로는 검색할 추가 디렉토리를 설정
-. 만약 검색 경로 내의 디렉토리에서 명령(파일)이 발견되지 않으면 Shell은 프로그램이 없다는 에러 메시지를 출력
-. 현재 Shell의 검색 경로의 설정은 .profile(Bourne Shell), .cshrc(C Shell)에서 지정
-. 검색 경로에서 콜론(:)은 널(null) 디렉토리(현재의 디렉토리)
-. echo 명령으로 현재 검색 경로를 출력
검색 경로의 출력 $ echo $PATH :/usr/bin:/usr |
(13) 비지정 변수
-. Shell에서는 지정되지 않은 변수도 사용할 수 있다.
-. set명령의 -u 옵션을 지정하면 비지정 변수의 사용을 막을 수 있다.
-. 비지정 변수를 사용할 수 있는 방법
변수 |
설 명 |
${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로 대치한다. 그렇지 않으면 아무것도 대치하지 않는다. |
비지정 변수 사용 예제 1 $ echo $she likes Jon.
$ echo ${she:-Mary} likes John.
$ echo $she likes John.
$ echo ${she:?Error} likes John.
$ echo ${she:+Jane} likes John.
$ echo ${she:=Sue} likes John.
$ echo $she likes John.
$ echo ${she:?Error} likes John.
|
비지정 변수 사용 예제 2 $ echo $fruit apple
$ set -u $ echo $fruit apple
|
3.4 특수 문자의 인용
(1) UNIX Shell에서 특수 문자를 인용하는 방법이다.
(2) 백슬래쉬(\) : 백슬래쉬 뒤에 오는 문자를 인용
(3) 단일 인용부호(',')
-. 단일 인용부호로 묶은 문자를 인용.
-. 어떤 해석도 발생하자 않는다.
(3) 이중 인용부호(",")
-. 이중 인용부호로 묶은 문자는 \, ", ", $를 제외하고 인용.
-. 명령과 파라미터 변수 대치가 이중 인 용부호 안에서 발생
bsh prompt에서 실행해 보면 $ echo $HOME
$ echo \$HOME
$ echo '$HOME'
$ echo " $HOME"
|
그렇다면 다음 세 개의 명령의 차이는 무엇일까? $ name='Gildong Hong' $ name="Gildong Hong" $ name=Gildong\ Hong |
3.5 명령 종결 상태
(1) 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 |
(2) 예제
$ pwd
$ echo $?
$ ls /test
$ echo $?
$ echo $?
|
3.6 단순 조건문
(1) && 연산자
: 첫 번째 명령이 성공적(리턴 0)으로 수행될 때에만 실행
(2) || 연산자
: 첫 번째 명령이 실행 실패(0이외의 종결 상태)일 때에만 실행
(3) true / false
-. ture = 0의 종결 상태를 리턴
-. false = 0 이외의 종결 상태를 리턴
-. true와 false는 if, while과 같은 조건문에서 자주 사용된다.
예제 $ ls -l >/dev/null && echo Sucess! Sucess! $ ls -l testtest || echo Failed...
$ true && echo TRUE
$ false || echo FALSE
|
3.7 단순 명령, 파이프라인, 리스트
(1) 리스트의 요소를 분리하는 분리자
분리자 |
설 명 |
; |
순차실행 |
| |
파이프 라인 실행 |
& |
백그라운드 실행 |
&& |
조건실행(true) |
|| |
조건실행(false) |
(2) 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 |
(3) IF 조건문 예제
: 파일이 존재하면 내용을 보여주고, 그렇지 않으면 파일을 생성한다.
Shell Program 예제 if [ -r filename ] then cat filename else echo "Enter the data for filename" cat > filename fi |
3.8 Shell 프로그램 매개변수
(1) $1은 명령행의 첫 번째 매개변수, $2은 명령행의 두 번째 매개변수, ...를 나타낸다.
(2) $0는 현재 실행중인 Shell 프로그램을 나타낸다.
(3) 다음은 Shell 매개변수를 나타내는 표이다.
Bourne Shell |
C Shell |
설명 |
$# |
$# |
매개변수의 수 |
$0 |
$0 |
명령어 이름 |
$1, $2, ... |
$1, $2, ... |
매개변수 |
|
$argv[n] |
매개변수 $1, ... |
$* |
$*, $argv[*] |
$1, $2, ... |
$@ |
|
$1, $2, ... |
$- |
|
set 명령의 Shell options |
$? |
|
마지막 명령의 리턴 값 |
$$ |
$$ |
현재 명령의 프로세스 번호 |
$! |
|
마지막 백그라운드 명령의 프로세스 번호 |
(4) 예제
: 네 개의 매개 변수를 입력 받아서 출력하는 예
Shell Program 예제 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 |
3.9 While과 Until 조건 루프
(1) while 문
형식 while [ condition ] do actions done |
(2) until 문
형식 Until [ end_condition ] do actions done |
3.10 For 문
형식 for variable_name in value1 value2 . . . do action on $variable_name done |
3.11 Case 문
형식 case $variable_name in value1) action1 ;; value2) action2 ;; value3|value4) acton3 ;; . . . *) default action ;; esac |
(1) "*)"은 default action을 의미한다. match되는 것이 없으면 default action을 수행한다.
(2) "|" 은 or를 타나낸다.
(3) ?는 한 문자와 대치될 수 있으며, 대괄호는 문자의 클래스를 정의한다.
3.12 Break와 Continue
(1) break는 while, for, until 등의 loop문에서 loop를 벗어날 수 있도록 해 준다.
(2) continue는 loop를 계속 수행할 수 있도록 해준다. 즉 loop내의 다음 반복을 수행한다.
3.13 명령 대치
(1) 명령 대치는 명령어의 실행 결과를 변수의 값으로 지정되는 경우이다.
이것은 명령어가 역인용기 호(` : backquote)로 둘러 싸인다.
(2) 명령 대치는 Shell 변수에 대한 산술 연산을 수행하는데 자주 사용한다.
예제 $ today=`date` $ echo $today
|
3.14 Shell 대치
(1) 명령어 대치 : `command`
(2) 변수 대치 : $variable_name
3.15 Here Documents
: Here documents는 Shell 프로그램 내에서 표준 입력을 일시적으로 재지정에 사용.
형식 command args <<symbol . . . documents . . . symbol
<< 이후의 symbol은 here document의 끝을 나타낸다. |
3.16 Shell 함수
(1) Bourne Shell의 약점 중의 하나는 함수가 부족하다는 것
(2) 형식
Shell 함수의 구문 function_name() { statements } |
(3) Shell 함수는 Shell scripts의 맨 위에 정의되어야 한다.
3.17 Set - 변수출력과 Shell 운영 모드 지정
(1) set
-. Shell 내부 옵션의 지정을 제어
-. 값을 Shell의 위치 파라미터로 이동하는 역할
(2) set의 옵션
option |
설 명 |
-e |
명령이 실패하면 즉시 탈출한다. |
-f |
파일명 생성을 못하게 한다. |
-n |
명령을 실행하지 않고 읽는다. 이것은 실제 실행시키지는 않고 Shell 대본의 구문을 테스트하고자 할 때 유용하다. Shell scripts 디버깅 때 자주 사용 |
-i |
대화형 쉘을 실행한다. terminate 신호는 무시된다. interrupt 신호는 받아들였다가 무시되는데, 인터럽트가 되도록 기다리게 한다. |
-t |
한 명령을 실행한 후 탈출한다. |
-u |
비지정 변수에 대한 참조를 에러로 한다. |
-v |
vervose 모드를 설정한다. Shell scripts 디버깅 때 자주 사용 |
-x |
실행될 때 +가 앞에 있는 각 명령을 출력한다. Shell scripts 디버깅 때 자주 사용 |
- |
-v와 -x 디버깅 플래그를 해제한다. |
-- |
플래그 옵션 중의 어느 것도 변경되지 않는다. |
3.18 Test([,]) - 조건 평가
(1) 주어진 이름이 파일이나 디렉토리이면,
읽을 수 있는지(readable), 쓸 수 있는지(writable), 실행할 수 있는지(executable) 여부결정
(2) 두 스트링 혹은 수치(integer)
큰지(greater than), 보다 작은지(less than), 같은지(equal)를 결정
(3) AND, OR, NOT logic 연산을 허락
(4) 파일 액세스 테스트를 위한 option
option |
설 명 |
-b file |
file이 블록 특수 파일이면 리턴 True(0) |
-c file |
file이 문자 특수 파일이면 리턴 True(0) |
-d file |
file이 디렉토리 파일이면 리턴 True(0) |
-f file |
file이 보통 특수 파일이면 리턴 True(0) |
-g file |
file이 set-group-ID 권한을 가지면 리턴 True(0) |
-h file |
file이 기호 링크이면 리턴 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) |
(5) 스트링 비교를 위한 option
optoin |
설 명 |
-n s1 |
스트링 s1이 길이가 0 이상이면 리턴 True(0) |
s1 |
스트링 s1이 널이 아니면 리턴 True(0) |
-z s1 |
스트링 s1의 길이가 0 이면 리턴 True(0) |
s1 = s2 |
두 개의 스트링이 같으면 리턴 True(0) |
s1 != s2 |
두 개의 스트링이 같지 않으면 리턴 True(0) |
(6) 수치 비교를 위한 option
option |
설 명 |
-eg |
같음 |
-gt |
보다 큼 |
-ge |
크거나 같음 |
-ng |
같지 않음 |
-lt |
보다 작음 |
-le |
작거나 같음 |
(7) 논리 연산을 위한 option
option |
설 명 |
! |
NOT |
-a |
AND |
-o |
OR |
3.19 Expr - 표현식 평가
(1) expr 명령은 범용의 정수 산술 프로그램이다.
expr은 그 결과가 0이 아니면 참이고, 그 이외에는 거짓을 리턴한다.
(2) 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 중의 하나이다. |
(3) 예제
$ tty
$ expr `tty` : ".*\(.\)\$"
|
3.20 Ulimit - 자원 제한의 지정과 출력
(1) ulimit 명령은 여러 자원의 제한을 지정한다.
(2) Ulimit의 옵션
option |
설 명 |
-a |
제한 리스트 보기 |
-H |
강한 제한 지정 |
-S |
약한 제한 지정(default) |
-c |
512byte 블록 단위의 최대 코어 덤프 파일 크기 |
-d |
Kbyte 단위의 최대 데이타 세그먼트 크기 |
-f |
Kbyte 단위의 최대 파일 생성 크기 |
-n |
파일 지시자의 최대 수 |
-s |
Kbyte 단위의 최대 스택 세그먼트 크기 |
-t |
초 단위의 최대 CPU 시간 |
-v |
Kbyte 단위의 최대 가상 기억장치 크기 |
(3) 예제
$ ulimit -a
|
3.21 getopts - scripts에서의 옵션 관리
(1) getopts 명령은 옵션 플래그에 대해 System V 표준을 따르는 Shell 대본을 만든다.
(2) getopts 명령 은 두 개의 매개변수를 요구한다.
(3) 옵션 플래그의 리스트와 현재의 옵션 플래그가 저장될 변수이다.
3.22 Bourne Shell의 내장 명령
(1) Bourne Shell의 내장 명령
명 령 |
설 명 |
: |
아무 일도 하지 않는다. |
.file |
file에서 현재 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 또는 사용자 인터페이스로 전환할 수 있도록 한다. |
export [var...] |
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인 백그라운드 프로세스가 끝날 때까지 기다리거나 모든 백그라운드 프로세스가 끝날 때까지 기다린다. |
3.22 언제 Shell programming을 사용하는가?
(1) 실행 시간이 많이 소요된다.
(2) 이미 UNIX 시스템 도구로 작성되어 있는 기능을 사용해 문제를 해결할 때
(3) 기본 데이타 항목이 텍스트나 파일의 행일 경우
(4) 많은 파일을 위해서 어떤 것을 하고자할 때
(5) 같은 작업을 반복 수행하고자 할 때
- 문서의 그룹내에서 날짜나 이름을 바꾼다
- 보고서를 매달 만든다.
- 상태를 매일 입력하고 매달 보고한다.
3.23 언제 Shell programming을 사용하지 말아야 하는가?
(1) 아주 복잡한 작업인 경우
(2) 처리 속도 및 효율이 높은 것을 요구하는 경우
(3) 다른 H/W 환경인 경우
(4) 다른 소프트웨어 툴들을 사용할 경우