Linux/UNIX Programming 쉘(Shell) 문양세 강원대학교 IT대학 컴퓨터과학전공
Shell? 쉘(Shell) Shell이란 명령어 해석기(Command Processor or Command Interpreter): 사용자가 입력하는 명령을 읽고 해석하는 프로그램 프로그래밍 언어: Shell이 해석할 수 있는 스크립트(shell script)라는 프로그램을 작성 Linux/Unix를 사용하는데 있어 주요한 인터페이스
Shell의 종류 (1/2) C Shell Bourne Shell C Sehll에는 크게 두 가지가 있음 첫 번째는 C Shell 자체로서 프로그램 이름은 csh (/bin/csh) C Shell 계열의 다른 하나는 tcsh(/bin/tcsh)이며, 다른 쉘들에 비해서 아주 뛰어난 기능을 제공하는 C Shell의 하나임 Bourne Shell 초기의 Shell 중의 하나로 지금도 널리 사용되고 있음 Korn Shell은 Bourne Shell에 대해 호환성을 제공하는 확장판 Korn Shell의 중요한 특성: 이전 명령어 기억, 작업 제어 등 Bourne Shell의 아류들: Bash Shell, zsh 등
Shell의 종류 (2/2) 쉘(Shell)
표준 입력과 표준 출력 쉘(Shell) 표준 입출력의 기본 개념 모든 프로그램은 어떤 자원으로부터든지 입력을 받아들일 수 있어야 하고 어떤 대상이든지 출력할 수 있어야 함 표준 입력(standard input): 데이타를 읽는 방법/디바이스 표준 출력(standard output): 데이타를 출력하는 방법/디바이스 두 가지 커다란 장점 표준 입출력을 사용하면 사용자 입장에서 엄청난 유연성을 가질 수 있음 프로그램을 설계하고 작성하는 일이 매우 쉬워졌음
표준 출력의 Redirection (1/2) Redirection: 표준 출력을 파일로 보내는 것 쉘(Shell) Redirection: 표준 출력을 파일로 보내는 것 어떤 명령의 결과를 파일로 보내고 싶다면 그 명령어 다음에 “>” 문자를 사용하고 파일 이름을 사용 예) $ ls –l > dir_list 표준 출력 내용을 기존 파일에 Append하려면 “>>”를 사용 예) $ date >> dir_list
표준 출력의 Redirection (2/2) 쉘(Shell)
표준 출력의 Redirection (2/2) 쉘(Shell)
파이프라인(Pipeline) (1/4) 쉘(Shell) 표준 출력을 다른 프로그램의 입력으로 사용하고자 할 때 사용함 (프로그램의 결과를 다른 프로그램에 파이프 시킨다고 말함) 프로그램(명령어) 이름 다음에 “|”(수직 막대)를 사용 예) sort 프로그램의 결과를 lpr(데이타를 인쇄하는 명령어)로 보내려면: $ sort input | lpr Shell을 사용하는데 있어서 매우 유용한 기능의 하나임
파이프라인(Pipeline) (2/4) 쉘(Shell)
파이프라인(Pipeline) (3/4) 쉘(Shell)
파이프라인(Pipeline) (4/4) 쉘(Shell)
표준 입력의 Redirection (1/3) 쉘(Shell) 표준 입력(즉, 키보드 입력)을 파일로 Redirection 시키고 싶은 경우 (Shell에게 그 프로그램이 데이타 입력을 키보드로부터가 아니라 파일로부터 읽어 들이도록 말하는 것) 실행하고자 하는 프로그램(명령어) 다음에 “< ” 문자를 사용한 후 입력 파일의 이름을 적음 $ sort < input 표준 입력과 출력을 함께 Redirection하는 것도 가능 $ sort < unsorted > sorted
표준 입력의 Redirection (2/3) 쉘(Shell)
표준 입력의 Redirection (3/3) 쉘(Shell)
파이프라인 분리(tee) (1/3) 쉘(Shell) T자 관(tee) 자신에게 들어오는 입력 데이타를 표준 출력(stdout)으로 출력할 뿐 아니라 지정된 파일로도 보내는 장치 T관을 만들기 위해서는 tee 명령을 사용 $ tee [-a] files // “-a”는 append를 의미함 일반적으로 파이프라인과 함께 사용하여, 출력 결과를 화면(표준 출력)으로 display함과 동시에 파일로 저장하기 위하여 사용함 $ sort < unsorted | tee sorted
파이프라인 분리(tee) (2/3) 쉘(Shell)
파이프라인 분리(tee) (3/3) 쉘(Shell)
히스토리(history) 기능 (1/5) 쉘(Shell) 명령 입력을 쉽게 하도록 C Shell에서 제공하는 기능으로서, 과거에 입력한 명령을 반복하여 입력할 때 매우 유용함 히스토리 치환 기능: 이전에 사용했던 명령을 다시 칠 필요 없이 고쳐서 재입력 하도록 해주는 것 히스토리 목록을 보기 위해서는 history 명령을 사용 $ history [n] // 최근 n개의 명령어 이력을 보여줌 히스토리 기능을 사용한 명령어 입력 방법 $ !! // 가장 최근에 수행한 명령어를 반복하여 수행 $ !n // n번째 수행한 명령어를 반복하여 수행 $ !pattern // 주어진 pattern으로 시작하는 가장 최근의 명령어 반복 수행
히스토리(history) 기능 (2/5) 쉘(Shell)
히스토리(history) 기능 (3/5) 쉘(Shell)
히스토리(history) 기능 (4/5) 쉘(Shell)
히스토리(history) 기능 (5/5) 쉘(Shell)
초기화 파일과 종료 파일 쉘(Shell) C Shell이 명령을 저장해 두었다가 자동으로 실행되도록 할 수 있는 특수한 세 파일: .cshrc, .login, .logout .cshrc 파일(or .login 파일)에 일반적으로 들어가야 할 명령 Shell 변수를 설정하는 것 (주로 경로, 터미널 타입 등을 정의) Alias를 정의하기 위한 것 .cshrc과 .login은 그 의미가 조금 다르나, 현재는 큰 차이가 없으므로, 둘 중 하나의 파일에 대부분의 내용을 정의하여도 무방함 .logout은 로그 아웃 시에 수행되는 파일임 (일반적으로 사용치 않음)