컴퓨터특강 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 Shell? Shell이란명령어해석기 (Command Processor or Command Interpreter): 사용자가입력하는명령을읽고해석하는프로그램프로그래밍언어 : Shell이해석할수있는스크립트 (shell script) 라는프로그램을작성유닉스를사용하는데있어주요한인터페이스 Page 2 1
Shell 의종류 (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 등 Page 3 Shell 의종류 (2/2) Page 4 2
표준입력과표준출력 표준입출력의기본개념모든프로그램은어떤자원으로부터든지입력을받아들일수있어야하고어떤대상이든지출력할수있어야함 표준입력 (standard input): 데이타를읽는방법 / 디바이스 표준출력 (standard output): 데이타를출력하는방법 / 디바이스 두가지커다란장점 표준입출력을사용하면사용자입장에서엄청난유연성을가질수있음 프로그램을설계하고작성하는일이매우쉬워졌음 Page 5 표준출력의 Redirection (1/2) Redirection: 표준출력을파일로보내는것 어떤명령의결과를파일로보내고싶다면그명령어다음에 > 문자를사용하고파일이름을사용 예 ) $ ls l > dir_list 표준출력내용을기존파일에 Append 하려면 >> 를사용 예 ) $ date >> dir_list Page 6 3
표준출력의 Redirection (2/2) Page 7 파이프라인 (Pipeline) (1/4) 표준출력을다른프로그램의입력으로사용하고자할때사용함 ( 프로그램의결과를다른프로그램에파이프시킨다고말함 ) 프로그램 ( 명령어 ) 이름다음에 ( 수직막대 ) 를사용 예 ) sort 프로그램의결과를 lpr( 데이타를인쇄하는명령어 ) 로보내려면 : $ sort input lpr Shell 을사용하는데있어서매우유용한기능의하나임 Page 8 4
파이프라인 (Pipeline) (2/4) Page 9 파이프라인 (Pipeline) (3/4) Page 10 5
파이프라인 (Pipeline) (4/4) Page 11 표준입력의 Redirection (1/3) 표준입력 ( 즉, 키보드입력 ) 을파일로 Redirection 시키고싶은경우 (Shell 에게그프로그램이데이타입력을키보드로부터가아니라파일로부터읽어들이도록말하는것 ) 실행하고자하는프로그램 ( 명령어 ) 다음에 < 문자를사용한후입력파일의이름을적음 $ sort < input 표준입력과출력을함께 Redirection 하는것도가능 $ sort < unsorted > sorted Page 12 6
표준입력의 Redirection (2/3) Page 13 표준입력의 Redirection (3/3) Page 14 7
파이프라인분리 (tee) (1/3) T 자관 (tee) 자신에게들어오는입력데이타를표준출력 (stdout) 으로출력할뿐아니라지정된파일로도보내는장치 T 관을만들기위해서는 tee 명령을사용 $ tee [-a] files // -a 는 append 를의미함 일반적으로파이프라인과함께사용하여, 출력결과를화면 ( 표준출력 ) 으로 display 함과동시에파일로저장하기위하여사용함 $ sort < unsorted tee sorted Page 15 파이프라인분리 (tee) (2/3) Page 16 8
파이프라인분리 (tee) (3/3) Page 17 Shell 변수 (1/2) Shell 이사용자의작업환경을최적화시켜주는방법중의하나는 Shell 변수를사용하는것 Shell 변수란, 이름을가지면서어떤형태의값을나타내는항목 Shell 변수에는두가지형태가있음 첫째, 켜고끄는스위치와같은역할을하는변수 (On/Off) 둘째, 문자열로서특정한값을저장하고있는변수 스위치변수를켜기위하여 set 명령을사용 스위치변수를끄기위해서는 unset 명령을사용 Page 18 9
Shell 변수 (2/2) Page 19 Shell 변수의값지정 (1/2) 스위치로서작용하는쉘변수외에값을저장하는변수가있음 이런형태의변수를설정하기위해서도 set 명령을사용 $ set variable_name = value 변수의값을확인하고싶으면 echo 명령을사용 $ echo $variable_name Page 20 10
Shell 변수의값지정 (2/2) Page 21 환경변수 (1/2) 환경변수 (environment variables): Shell 이프로그램들사이에어떤값을전달해주는역할을하는변수 기본적으로환경변수는대문자를사용 환경변수의값을설정하기위해서는 setenv 명령을사용 $ setenv variable_name value 환경변수의값을확인하고싶은경우 printenv 명령을사용 $ printenv [variable_name] Page 22 11
환경변수 (2/2) Page 23 탐색경로 (1/2) path 변수 : Shell이프로그램을어디에서찾아야할지말해주는것 path의값은탐색경로라고하는디렉토리이름의연속탐색경로를정의하는전형적인 set 명령 : $ set path = ( /usr/local/bin /usr/ucb /bin /usr/bin ~/bin ) bin 디텍토리에는주로실행프로그램을보관하고있으므로기본 프로그램을실행하기위해서는반드시경로에지정해주어야함 ( 일반적으로.cshrc 파일에탐색경로를지정해놓음 ) Page 24 12
탐색경로 (2/2) Page 25 히스토리 (history) 기능 (1/5) 명령입력을쉽게하도록 C Shell 에서제공하는기능으로서, 과거에입력한명령을반복하여입력할때매우유용함 히스토리치환기능 : 이전에사용했던명령을다시칠필요없이고쳐서재입력하도록해주는것 히스토리목록을보기위해서는 history 명령을사용 $ history [n] // 최근 n 개의명령어이력을보여줌 히스토리기능을사용한명령어입력방법 $!! // 가장최근에수행한명령어를반복하여수행 $!n // n번째수행한명령어를반복하여수행 $!pattern // 주어진 pattern으로시작하는가장최근의명령어반복수행 Page 26 13
히스토리 (history) 기능 (2/5) Page 27 히스토리 (history) 기능 (3/5) Page 28 14
히스토리 (history) 기능 (4/5) Page 29 히스토리 (history) 기능 (5/5) Page 30 15
초기화파일과종료파일 C Shell 이명령을저장해두었다가자동으로실행되도록할수있는특수한세파일 :.cshrc,.login,.logout.cshrc 파일 (or.login 파일 ) 에일반적으로들어가야할명령 Shell 변수를설정하는것 ( 주로경로, 터미널타입등을정의 ) Alias를정의하기위한것.cshrc과.login은그의미가조금다르나, 현재의 UNIX 환경에서는큰차이가없으므로, 둘중하나의파일에대부분의내용을정의하여도무방함.logout 은로그아웃시에수행되는파일임 ( 일반적으로사용치않음 ) Page 31 Shell Script (1/3) 쉘스크립트 (Shell Script) 일반적인유닉스명령을스크립트형태로프로그래밍한파일 명령어해석기 (interpreter) 스크립트 ( 순차적인명령의집합 ) 를읽고실행하는프로그램 UNIX 의상당수명령들이실제로 Shell Script 를사용하여작성됨 짧고간단한프로그램을작성할경우, Shell Script 가매우유용함 Page 32 16
Shell Script (2/3) Page 33 Shell Script (3/3) Page 34 17