06. unix shell - kangwonysmoon/courses/2009_2/us/06.pdf · 2016-06-02 ·...
TRANSCRIPT
Li /UNIX P iLi /UNIX P iLinux/UNIX ProgrammingLinux/UNIX Programming
UNIX SHELLUNIX SHELL
문양세문양세양세양세강원대학교강원대학교 ITIT특성화대학특성화대학 컴퓨터과학전공컴퓨터과학전공
Shell?Shell?UNIX Shell
Shell이란 명령어 해석기(Command Processor or Command Interpreter):사용자가 입력하는 명령을 읽고 해석하는 프로그램사용자가 입력하는 명령을 읽고 해석하는 프로그램
프로그래밍 언어:Shell이 해석할 수 있는 스크립트(shell script)라는 프로그램을 작성Shell이 해석할 수 있는 스크립트(shell script)라는 프로그램을 작성
유닉스를 사용하는데 있어 주요한 인터페이스
Linux/UNIX Programmingby Yang-Sae MoonPage 2
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
ShellShell의의 종류종류 (2/2)(2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 4
표준표준 입력과입력과 표준표준 출력출력UNIX Shell
표준 입출력의 기본 개념
모든 프로그램은 어떤 자원으로부터든지 입력을 받아들일 수 있어야 하
고 어떤 대상이든지 출력할 수 있어야 함
• 표준 입력(standard input): 데이타를 읽는 방법/디바이스
• 표준 출력(standard output): 데이타를 출력하는 방법/디바이스
두 가지 커다란 장점
• 표준 입출력을 사용하면 사용자 입장에서 엄청난 유연성을 가질 수 있음
• 프로그램을 설계하고 작성하는 일이 매우 쉬워졌음
Linux/UNIX Programmingby Yang-Sae MoonPage 5
표준표준 출력의출력의 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
표준표준 출력의출력의 Redirection (2/2)Redirection (2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 7
파이프라인파이프라인(Pipeline) (1/4)(Pipeline) (1/4)UNIX Shell
표준 출력을 다른 프로그램의 입력으로 사용하고자 할 때 사용함
(프로그램의 결과를 다른 프로그램에 파이프 시킨다고 말함)
프로그램(명령어) 이름 다음에 “|”(수직 막대)를 사용
예) sort 프로그램의 결과를 lpr(데이타를 인쇄하는 명령어)로 보내려면:) p ( 명령 )
$ sort input | lpr
Shell을 사용하는데 있어서 매우 유용한 기능의 하나임
Linux/UNIX Programmingby Yang-Sae MoonPage 8
파이프라인파이프라인(Pipeline) (2/4)(Pipeline) (2/4)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 9
파이프라인파이프라인(Pipeline) (3/4)(Pipeline) (3/4)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 10
파이프라인파이프라인(Pipeline) (4/4)(Pipeline) (4/4)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 11
표준표준 입력의입력의 Redirection (1/3)Redirection (1/3)UNIX Shell
표준 입력(즉, 키보드 입력)을 파일로 Redirection 시키고 싶은 경우
(Shell에게 그 프로그램이 데이타 입력을 키보드로부터가 아니라 파일로
부터 읽어 들이도록 말하는 것)
실행하고자 하는 프로그램(명령어) 다음에 “< ” 문자를 사용한 후 입력
파일의 이름을 적음파일의 이름을 적음
$ sort < input$ p
표준 입력과 출력을 함께 Redirection하는 것도 가능
$ sort < unsorted > sorted
Linux/UNIX Programmingby Yang-Sae MoonPage 12
표준표준 입력의입력의 Redirection (2/3)Redirection (2/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 13
표준표준 입력의입력의 Redirection (3/3)Redirection (3/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 14
파이프라인파이프라인 분리분리(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
파이프라인파이프라인 분리분리(tee) (2/3)(tee) (2/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 16
파이프라인파이프라인 분리분리(tee) (3/3)(tee) (3/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 17
Shell Shell 변수변수 (1/2)(1/2)UNIX Shell
Shell이 사용자의 작업 환경을 최적화시켜 주는 방법 중의 하나는 Shell 변수를 사용하는 것
Shell 변수란, 이름을 가지면서 어떤 형태의 값을 나타내는 항목
Shell 변수에는 두 가지 형태가 있음형
• 첫째, 켜고 끄는 스위치와 같은 역할을 하는 변수 (On/Off)
• 둘째, 문자열로서 특정한 값을 저장하고 있는 변수
스위치 변수를 켜기 위하여 set 명령을 사용
스위치 변수를 끄기 위해서는 unset 명령을 사용스위치 변수를 끄기 위해서는 명령을 사용
Linux/UNIX Programmingby Yang-Sae MoonPage 18
Shell Shell 변수변수 (2/2)(2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 19
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
Shell Shell 변수의변수의 값값 지정지정 (2/2)(2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 21
환경환경 변수변수 (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
환경환경 변수변수 (2/2)(2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 23
탐색탐색 경로경로 (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
탐색탐색 경로경로 (2/2)(2/2)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 25
히스토리히스토리(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
히스토리히스토리(history) (history) 기능기능 (2/5)(2/5)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 27
히스토리히스토리(history) (history) 기능기능 (3/5)(3/5)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 28
히스토리히스토리(history) (history) 기능기능 (4/5)(4/5)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 29
히스토리히스토리(history) (history) 기능기능 (5/5)(5/5)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 30
초기화초기화 파일과파일과 종료종료 파일파일UNIX Shell
C Shell이 명령을 저장해 두었다가 자동으로 실행되도록 할 수 있는 특수
한 세 파일: .cshrc, .login, .logout
.cshrc 파일(or .login 파일)에 일반적으로 들어가야 할 명령( g ) 명령
• Shell 변수를 설정하는 것 (주로 경로, 터미널 타입 등을 정의)
• Alias를 정의하기 위한 것
• .cshrc과 .login은 그 의미가 조금 다르나, 현재의 UNIX 환경에서는 큰 차이가
없으므로, 둘 중 하나의 파일에 대부분의 내용을 정의하여도 무방함
.logout은 로그 아웃 시에 수행되는 파일임 (일반적으로 사용치 않음)
Linux/UNIX Programmingby Yang-Sae MoonPage 31
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
Shell Script (2/3)Shell Script (2/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 33
Shell Script (3/3)Shell Script (3/3)UNIX Shell
Linux/UNIX Programmingby Yang-Sae MoonPage 34