본 자료는 상명대학교 신동하 교수님의 수업을 정리한 것임을 밝힙니다.
Simple Commands

$ [var=value] command arg1 arg2 ... [redirection] [&]
[ ] 대괄호 안은 option
명령 수행 후 return value에 따라 정상 종료와 비정상 종료를 구분할 수 있습니다.
return value | 정상 종료? 비정상 종료? |
0 | 정상 종료 |
0이 아닐 경우 | 비정상 종료 |
Pipelines

$ [time] [!] simple_command [ | ] simple_command ...
'|' 앞 명령의 standard output이 '|' 뒤 명령의 standard input으로 연결됨
pipelines의 return value는 마지막 수행된 명령의 return value임 단순 명령 앞에 '!'가 있으면 return value의 logical not을 return함
time

출력 결과 (real, user, sys) | time 종류 | 설명 |
real | wall clock time(real) | 사람이 느끼는 시간 |
user | user CPU time | process가 CPU를 사용한 시간 |
sys | system CPU time | kernel이 CPU를 사용한 시간 |
Total CPU time | user CPU time + system CPU time |
Lists

$ pipelines [op1] pipelines [op2] ...
op
; : 순서적 수행
& : background 실행
&& : logical and
|| : logical or
마지막에는 ; & 두가지 밖에 오지 못한다.
Subshells

$ (Lists)
Lists가 현재 shell이 새로 생성하는 child shell에서 수행되기 때문에 child shell 수행 시 변수의 변화가 현재 shell의 변수에 영향을 주지 않음
현재 shell의 변수에 영향을 주지 않고 무언가를 실행하고 싶을 때 이를 사용합니다.
group Commands

$ { Lists; } {<space>Lists;<space>}
Subshell과 달리 현재 shell에서 수행되기 때문에 현재 shell의 변수 환경에 영향을 줌
Pathname Expansions

pathname
: file system의 file을 지칭하는 방법 중 하나
경로명 확장은 해당 패턴 문자의 의미에 해당하는 이름의 파일이 존재하면 확장된다.
pattern character 형식
? | 어떤 한 글자와 일치 |
* | 어떤 string과 일치 |
[...] | 대괄호 안의 어떤 한 문자와 일치 |
Brace {} & Tilde ~ expansion

{word, ...}
Brace 안의 하나의 string을 임의로 선택하여 확장한다. 이때 string에 해당하는 파일이 존재하지 않아도 된다.
Tilde (~) 사용 형식
~..
Commands Substitution

$ `command` 결과를 대치
or
$ (command) 명령어 자체를 대치
명령 대치는 주어진 명령을 수행한 후, 표준 출력으로 출력된 ` ` 안을 데이터로 대치한다.
Arithmetic Expansions

$ ((expresion))
let name=expression
operator
Functions

function define 형식
$ [function] name () { Lists; }
function call 형식
$ name args...
Integer or String Test

[[ expression ]] [[<space>expression<space>]]
[ expression ] [<space>expression<space>]

File Test

주어진 파일에 대한 다양한 특징을 테스트합니다. shell script control을 위해 배운다.
[[ expression ]]
[ expression ]
파일 연산자
연산자 | 설명 |
-e | exist? |
-f | file? |
-b | block device? |
-c | character device? |
-p | pipe? |
-h | symbolic link? |
-S | socket? |
-s | zero-size? |
-r | readable? |
-w | writable? |
-x | excutable? |
-g | set gid? |
-u | set uid? |
-nt | newer than? |
-ot | older than? |
logical 연산자
-a | and |
-o | or |
! | not |
Control
if 사용 형식
if Test; then Lists;
[elif Test; then Lists;]
...
[else Test; then Lists;]
fi
for 사용 형식
for name in word; do Lists; done
while 사용 형식
while Test; do Lists; done
기타 명령어

Shell Programs
shell program이랑 shell 언어로 작성된 프로그램이다.
shell program 파일의 첫 줄에는 항상 다음 한 줄을 포함해야한다.
#!/bin/bash
or
#!/bin/zsh
실행 방법
$ sh <파일 이름> <인수>
$ chmod 755 파일 이름
$ ./파일이름 인수


Uploaded by N2T