06. unix shell - kangwonysmoon/courses/2006_1/us/06.pdf · 2016-06-02 · 2 page 3 unix system...

17
1 2006 2006봄학기 봄학기 문양세 문양세 강원대학교 강원대학교 컴퓨터과학과 컴퓨터과학과 컴퓨터 컴퓨터 특강 특강 (UNIX System Programming) (UNIX System Programming) UNIX Shell UNIX Shell Page 2 UNIX System Programming by Yang-Sae Moon Shell? Shell? Shell이란 명령어 해석기(Command Processor or Command Interpreter): 사용자가 입력하는 명령을 읽고 해석하는 프로그램 프로그래밍 언어: Shell이 해석할 수 있는 스크립트(shell script)라는 프로그램을 작성 유닉스를 사용하는데 있어 주요한 인터페이스 UNIX Shell

Upload: others

Post on 05-Jan-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

1

20062006년년 봄학기봄학기

문양세문양세

강원대학교강원대학교 컴퓨터과학과컴퓨터과학과

컴퓨터컴퓨터 특강특강 (UNIX System Programming)(UNIX System Programming)

UNIX ShellUNIX Shell

Page 2UNIX System Programmingby Yang-Sae Moon

Shell?Shell?

Shell이란 명령어 해석기(Command Processor or Command Interpreter):사용자가 입력하는 명령을 읽고 해석하는 프로그램

프로그래밍 언어:Shell이 해석할 수 있는 스크립트(shell script)라는 프로그램을 작성

유닉스를 사용하는데 있어 주요한 인터페이스

UNIX Shell

2

Page 3UNIX System Programmingby Yang-Sae Moon

ShellShell의의 종류종류 (1/2)(1/2)

C Shell

• UNIX에서 기본적으로 제공되는 shell로서, 일반적으로 가장 많이 사용함

• C Sehll에는 크게 두 가지가 있음

- 첫 번째는 C Shell 자체로서 프로그램 이름은 csh (/bin/csh)

- C Shell 계열의 다른 하나는 tcsh이며, 다른 쉘들에 비해서 아주 뛰어난 기능을 제공

하는 C Shell의 하나임

Bourne Shell

• 초기의 유닉스 Shell 중의 하나로 지금도 널리 사용되고 있음

• Korn Shell은 Bourne Shell에 대해 호환성을 제공하는 확장판

• Korn Shell의 중요한 특성: 이전 명령어 기억, 작업 제어 등

• Bourne Shell의 아류들: Bash Shell, zsh 등

UNIX Shell

Page 4UNIX System Programmingby Yang-Sae Moon

ShellShell의의 종류종류 (2/2)(2/2)UNIX Shell

3

Page 5UNIX System Programmingby Yang-Sae Moon

표준표준 입력과입력과 표준표준 출력출력

표준 입출력의 기본 개념

모든 프로그램은 어떤 자원으로부터든지 입력을 받아들일 수 있어야 하

고 어떤 대상이든지 출력할 수 있어야 함

• 표준 입력(standard input): 데이타를 읽는 방법/디바이스

• 표준 출력(standard output): 데이타를 출력하는 방법/디바이스

두 가지 커다란 장점

• 표준 입출력을 사용하면 사용자 입장에서 엄청난 유연성을 가질 수 있음

• 프로그램을 설계하고 작성하는 일이 매우 쉬워졌음

UNIX Shell

Page 6UNIX System Programmingby Yang-Sae Moon

표준표준 출력의출력의 Redirection (1/2)Redirection (1/2)

Redirection: 표준 출력을 파일로 보내는 것

어떤 명령의 결과를 파일로 보내고 싶다면 그 명령어 다음에 “>” 문자를

사용하고 파일 이름을 사용

예) $ ls –l > dir_list

표준 출력 내용을 기존 파일에 Append하려면 “>>”를 사용

예) $ date >> dir_list

UNIX Shell

4

Page 7UNIX System Programmingby Yang-Sae Moon

표준표준 출력의출력의 Redirection (2/2)Redirection (2/2)UNIX Shell

Page 8UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인(Pipeline) (1/4)(Pipeline) (1/4)

표준 출력을 다른 프로그램의 입력으로 사용하고자 할 때 사용함

(프로그램의 결과를 다른 프로그램에 파이프 시킨다고 말함)

프로그램(명령어) 이름 다음에 “|”(수직 막대)를 사용

예) sort 프로그램의 결과를 lpr(데이타를 인쇄하는 명령어)로 보내려면:

$ sort input | lpr

Shell을 사용하는데 있어서 매우 유용한 기능의 하나임

UNIX Shell

5

Page 9UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인(Pipeline) (2/4)(Pipeline) (2/4)UNIX Shell

Page 10UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인(Pipeline) (3/4)(Pipeline) (3/4)UNIX Shell

6

Page 11UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인(Pipeline) (4/4)(Pipeline) (4/4)UNIX Shell

Page 12UNIX System Programmingby Yang-Sae Moon

표준표준 입력의입력의 Redirection (1/3)Redirection (1/3)

표준 입력(즉, 키보드 입력)을 파일로 Redirection 시키고 싶은 경우

(Shell에게 그 프로그램이 데이타 입력을 키보드로부터가 아니라 파일로

부터 읽어 들이도록 말하는 것)

실행하고자 하는 프로그램(명령어) 다음에 “< ” 문자를 사용한 후 입력

파일의 이름을 적음

$ sort < input

표준 입력과 출력을 함께 Redirection하는 것도 가능

$ sort < unsorted > sorted

UNIX Shell

7

Page 13UNIX System Programmingby Yang-Sae Moon

표준표준 입력의입력의 Redirection (2/3)Redirection (2/3)UNIX Shell

Page 14UNIX System Programmingby Yang-Sae Moon

표준표준 입력의입력의 Redirection (3/3)Redirection (3/3)UNIX Shell

8

Page 15UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인 분리분리(tee) (1/3)(tee) (1/3)

T자 관(tee)자신에게 들어오는 입력 데이타를 표준 출력(stdout)으로 출력할 뿐 아니

라 지정된 파일로도 보내는 장치

T관을 만들기 위해서는 tee 명령을 사용

$ tee [-a] files // “-a”는 append를 의미함

일반적으로 파이프라인과 함께 사용하여, 출력 결과를 화면(표준 출력)으로 display함과 동시에 파일로 저장하기 위하여 사용함

$ sort < unsorted | tee sorted

UNIX Shell

Page 16UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인 분리분리(tee) (2/3)(tee) (2/3)UNIX Shell

9

Page 17UNIX System Programmingby Yang-Sae Moon

파이프라인파이프라인 분리분리(tee) (3/3)(tee) (3/3)UNIX Shell

Page 18UNIX System Programmingby Yang-Sae Moon

Shell Shell 변수변수 (1/2)(1/2)

Shell이 사용자의 작업 환경을 최적화시켜 주는 방법 중의 하나는 Shell 변수를 사용하는 것

Shell 변수란, 이름을 가지면서 어떤 형태의 값을 나타내는 항목

Shell 변수에는 두 가지 형태가 있음

• 첫째, 켜고 끄는 스위치와 같은 역할을 하는 변수 (On/Off)

• 둘째, 문자열로서 특정한 값을 저장하고 있는 변수

스위치 변수를 켜기 위하여 set 명령을 사용

스위치 변수를 끄기 위해서는 unset 명령을 사용

UNIX Shell

10

Page 19UNIX System Programmingby Yang-Sae Moon

Shell Shell 변수변수 (2/2)(2/2)UNIX Shell

Page 20UNIX System Programmingby Yang-Sae Moon

Shell Shell 변수의변수의 값값 지정지정 (1/2)(1/2)

스위치로서 작용하는 쉘 변수 외에 값을 저장하는 변수가 있음

이런 형태의 변수를 설정하기 위해서도 set 명령을 사용

$ set variable_name = value

변수의 값을 확인하고 싶으면 echo 명령을 사용

$ echo $variable_name

UNIX Shell

11

Page 21UNIX System Programmingby Yang-Sae Moon

Shell Shell 변수의변수의 값값 지정지정 (2/2)(2/2)UNIX Shell

Page 22UNIX System Programmingby Yang-Sae Moon

환경환경 변수변수 (1/2)(1/2)

환경 변수(environment variables):Shell이 프로그램들 사이에 어떤 값을 전달해 주는 역할을 하는 변수

기본적으로 환경 변수는 대문자를 사용

환경 변수의 값을 설정하기 위해서는 setenv 명령을 사용

$ setenv variable_name value

환경 변수의 값을 확인하고 싶은 경우 printenv 명령을 사용

$ printenv [variable_name]

UNIX Shell

12

Page 23UNIX System Programmingby Yang-Sae Moon

환경환경 변수변수 (2/2)(2/2)UNIX Shell

Page 24UNIX System Programmingby Yang-Sae Moon

탐색탐색 경로경로 (1/2)(1/2)

path 변수: Shell이 프로그램을 어디에서 찾아야 할지 말해 주는 것

path의 값은 탐색 경로라고 하는 디렉토리 이름의 연속

탐색 경로를 정의하는 전형적인 set 명령:

$ set path = ( /usr/local/bin /usr/ucb /bin /usr/bin ~/bin )

bin 디텍토리에는 주로 실행 프로그램을 보관하고 있으므로 기본

프로그램을 실행하기 위해서는 반드시 경로에 지정해 주어야 함

(일반적으로 .cshrc 파일에 탐색 경로를 지정해 놓음)

UNIX Shell

13

Page 25UNIX System Programmingby Yang-Sae Moon

탐색탐색 경로경로 (2/2)(2/2)UNIX Shell

Page 26UNIX System Programmingby Yang-Sae Moon

히스토리히스토리(history) (history) 기능기능 (1/5)(1/5)

명령 입력을 쉽게 하도록 C Shell에서 제공하는 기능으로서, 과거에 입력

한 명령을 반복하여 입력할 때 매우 유용함

히스토리 치환 기능: 이전에 사용했던 명령을 다시 칠 필요 없이 고쳐서

재입력 하도록 해주는 것

히스토리 목록을 보기 위해서는 history 명령을 사용

$ history [n] // 최근 n개의 명령어 이력을 보여줌

히스토리 기능을 사용한 명령어 입력 방법

$ !! // 가장 최근에 수행한 명령어를 반복하여 수행

$ !n // n번째 수행한 명령어를 반복하여 수행

$ !pattern // 주어진 pattern으로 시작하는 가장 최근의 명령어 반복 수행

UNIX Shell

14

Page 27UNIX System Programmingby Yang-Sae Moon

히스토리히스토리(history) (history) 기능기능 (2/5)(2/5)UNIX Shell

Page 28UNIX System Programmingby Yang-Sae Moon

히스토리히스토리(history) (history) 기능기능 (3/5)(3/5)UNIX Shell

15

Page 29UNIX System Programmingby Yang-Sae Moon

히스토리히스토리(history) (history) 기능기능 (4/5)(4/5)UNIX Shell

Page 30UNIX System Programmingby Yang-Sae Moon

히스토리히스토리(history) (history) 기능기능 (5/5)(5/5)UNIX Shell

16

Page 31UNIX System Programmingby Yang-Sae Moon

초기화초기화 파일과파일과 종료종료 파일파일

C Shell이 명령을 저장해 두었다가 자동으로 실행되도록 할 수 있는 특수

한 세 파일: .cshrc, .login, .logout

.cshrc 파일(or .login 파일)에 일반적으로 들어가야 할 명령

• Shell 변수를 설정하는 것 (주로 경로, 터미널 타입 등을 정의)

• Alias를 정의하기 위한 것

• .cshrc과 .login은 그 의미가 조금 다르나, 현재의 UNIX 환경에서는 큰 차이가

없으므로, 둘 중 하나의 파일에 대부분의 내용을 정의하여도 무방함

.logout은 로그 아웃 시에 수행되는 파일임 (일반적으로 사용치 않음)

UNIX Shell

Page 32UNIX System Programmingby Yang-Sae Moon

Shell Script (1/3)Shell Script (1/3)

쉘 스크립트(Shell Script)일반적인 유닉스 명령을 스크립트 형태로 프로그래밍한 파일

명령어 해석기(interpreter)스크립트(순차적인 명령의 집합)를 읽고 실행하는 프로그램

UNIX의 상당수 명령들이 실제로 Shell Script를 사용하여 작성됨

짧고 간단한 프로그램을 작성할 경우, Shell Script가 매우 유용함

UNIX Shell

17

Page 33UNIX System Programmingby Yang-Sae Moon

Shell Script (2/3)Shell Script (2/3)UNIX Shell

Page 34UNIX System Programmingby Yang-Sae Moon

Shell Script (3/3)Shell Script (3/3)UNIX Shell