34
Li /UNIX P i Li /UNIX P i Linux/UNIX Programming Linux/UNIX Programming UNIX SHELL UNIX SHELL 양세 양세 강원대학교 강원대학교 IT IT특성화대학 특성화대학 컴퓨터과학전공 컴퓨터과학전공

06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

Li /UNIX P iLi /UNIX P iLinux/UNIX ProgrammingLinux/UNIX Programming

UNIX SHELLUNIX SHELL

문양세문양세양세양세강원대학교강원대학교 ITIT특성화대학특성화대학 컴퓨터과학전공컴퓨터과학전공

Page 2: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

Shell?Shell?UNIX Shell

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 2

Page 3: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

C Shell

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

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

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

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

하는 C Shell의 하나임

Bourne Shell

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

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 3

Page 4: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 4

Page 5: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

표준표준 입력과입력과 표준표준 출력출력UNIX Shell

표준 입출력의 기본 개념

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

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

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

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

두 가지 커다란 장점

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 5

Page 6: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

사용하고 파일 이름을 사용

예) $ l l di li예) $ ls –l > dir_list

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

예) $ date >> dir list예) $ date >> dir_list

Linux/UNIX Programmingby Yang-Sae MoonPage 6

Page 7: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 7

Page 8: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

$ sort input | lpr

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

Linux/UNIX Programmingby Yang-Sae MoonPage 8

Page 9: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 9

Page 10: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 10

Page 11: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 11

Page 12: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

파일의 이름을 적음파일의 이름을 적음

$ sort < input$ p

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

$ sort < unsorted > sorted

Linux/UNIX Programmingby Yang-Sae MoonPage 12

Page 13: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 13

Page 14: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 14

Page 15: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

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

$ sort < unsorted | tee sorted

Linux/UNIX Programmingby Yang-Sae MoonPage 15

Page 16: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 16

Page 17: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 17

Page 18: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 18

Page 19: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 19

Page 20: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

$ set variable_name = value

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

$ echo $variable_name

Linux/UNIX Programmingby Yang-Sae MoonPage 20

Page 21: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 21

Page 22: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

$ setenv variable_name value

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

$ printenv [variable_name]

Linux/UNIX Programmingby Yang-Sae MoonPage 22

Page 23: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 23

Page 24: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 24

Page 25: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 25

Page 26: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

재입력 하도록 해주는 것

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

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

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

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 26

Page 27: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 27

Page 28: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 28

Page 29: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 29

Page 30: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 30

Page 31: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

• Alias를 정의하기 위한 것

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 31

Page 32: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

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

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

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

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

Linux/UNIX Programmingby Yang-Sae MoonPage 32

Page 33: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 33

Page 34: 06. UNIX Shell - Kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 · Shell의의종류종류(1/2) UNIX Shell C Shell • UNUNIXIX에서기본적으로제공되는sshellhell로서,

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

Linux/UNIX Programmingby Yang-Sae MoonPage 34