UNIX 및실습 12 장유닉스쉘의이해
학습목표 12 장. 유닉스쉘의이해 쉘의기능과종류를이해한다 콘쉘의주요기능과사용방법을익힌다 C쉘의주요기능과사용방법을익힌다 2
Section 01 유닉스쉘의기능과종류 쉘 사용자인터페이스를제공하는프로그램 쉘의기능 명령어해석기기능 사용자와커널사이에서명령을해석하여전달 사용자가입력한명령이나파일에서읽어들인명령을해석하고적절한프로그램을실행 프로그래밍기능 쉘은자체내에프로그래밍기능이있어프로그램작성가능 쉘의프로그래밍기능을이용하면여러명령을사용해반복적으로수행하는작업을하나의프로그램으로제작가능 쉘프로그램을쉘스크립트라고부름 사용자환경설정기능 초기화파일기능을이용해사용자환경을설정 명령을찾아오는경로설정, 새로운파일의기본권한설정, 다양한환경변수설정등사용자별로사용환경의특성을초기화파일에설정가능 로그인할때이초기화파일이실행되어사용자의초기환경이설정됨 3
쉘의동작순서 4
쉘의종류 [1/3] 본쉘 (Bourne Shell, sh) 최초의본격적인쉘로유닉스 V7 에처음등장 스티븐본 (Stephen Bourne) 이개발 현재도모든유닉스시스템에기본적으로설치 시스템관리작업을수행하는많은쉘스크립트들은본쉘을기반으로하고있음 히스토리기능, 앨리어스기능, 작업제어등사용자의편의를위한기능을다양하게제공안함 대부분의유닉스시스템에기본적으로설치되었으나, 솔라리스 11 에서는본쉘 (/usr/bin/sh) 이콘쉘로대체됨 콘쉘 (Korn Shell, ksh) 1983 년 AT&T 벨연구소의데이비드콘 (David Korn) 이개발 유닉스 SVR4 에포함되어발표되었는데, 본쉘과의호환성을유지 히스토리기능, 앨리어스기능등 C 쉘의특징들도모두제공하면서처리속도도빠르다는장점을가지고있음 5
쉘의종류 [2/3] C 쉘 (C Shell, csh) 캘리포니아 ( 버클리 ) 대학교에서빌조이 (Bill Joy) 가개발 1978 년 2BSD 유닉스에포함되어발표 본쉘의기능을확장한것으로앨리어스나히스토리같은사용자편의기능을포함 쉘스크립트작성을위한구문형식이 C 언어와같아 C 쉘이라불림 크기가커지고처리속도도느려졌다는단점이있으나편리한기능때문에일반사용자들이즐겨사용 배시쉘 (Bourne Again Shell, bash) 본쉘을기반으로 1988 년브라이언폭스 (Brain Fox) 에의해개발 본쉘과호환성을유지하면서 C 쉘, 콘쉘의편리한기능도포함 GNU 에따르는공개소프트웨어로, 리눅스의기본쉘로동작하고있어리눅스쉘로도많이알려져있음 6
기타쉘 TC 쉘 (tcsh) C 쉘의기능확장 쉘의종류 [3/3] 명령행편집기능, 명령어완성기능, 히스토리목록에서의시간표시등 데스크탑콘쉘 (dtksh) X 윈도우의기능을지원할수있도록콘쉘의기능을확장 Z 쉘 (zsh) TC 쉘과콘쉘의기능을함께가지고있는쉘 7
Section 02 콘쉘의주요기능 절대경로 : /usr/bin/ksh 기본프롬프트 일반사용자 : $ root사용자 : # 환경설정 환경설정을위해서는환경변수에적절한값을지정 환경변수와쉘변수설정 : bash 와동일 (5장참조 ) $ ATEST=test $ set ATEST=test 쉘변수설정 $ export BTEST=test $ env BTEST=test 환경변수설정 8 $ echo $ATEST test $ echo $BTEST test $ 쉘 / 환경변수값확인
앨리어스의설정 bash 와설정방법동일 초기화파일.kshrc 에저장하면로그인할때마다앨리어스설정됨 설정방법 $ alias ls= ls -F $ alias c=clear $ 삭제하기 $ unalias ls $ alias ls ls : alias not founc $ 9
히스토리기능 사용자가입력했던명령목록을저장했다가다시사용하는기능 히스토리설정 HZ=200 명령 200 개를저장할수있다는의미. 기본값은 100 히스토리저장 로그아웃할때지금까지입력된최근 HZ 개명령을히스토리파일 (~/.sh_history) 에저장 10
이전명령보기 - history 최근사용한 16 개명령을번호와함께출력 앨리어스. 원래명령은 ksh93 : hist -l ksh88 : fc -l 명령재실행 : r (recall 명령 ) $ r c cd tmp C 로시작하는 $ r 64 가장최근명령 history 64번명령 56 ls -l 57 alias rm= rm -i... 11 $ r 직전명령재실행 history 57 alias rm= rm -i 58 unalias ls 59...
히스토리기능 - 방향키사용 방향키기능 방향키로히스토리목록을불러서사용 방향키 기능히스토리목록을위쪽방향으로출력히스토리목록을아래쪽방향으로출력출력된히스토리목록의왼쪽으로커서를이동출력된히스토리목록의오른쪽으로커서를이동 12
파일명자동완성기능 파일명의앞일부분을입력하고 ESC 키를두번또는 TAB 키를입력하면나머지부분을자동으로완성 일부입력한앞부분이중복되면중복된부분까지만출력 사용예 $ ls local.cshrc local.login local.profile tmp $ ls l $ ls local.p local.profile $ 13
환경설정파일 시스템초기화파일 /etc/profile 사용자초기화파일 ~/.profile 콘쉘을사용하는모든사용자에게기본으로제공 프롬프트, 명령어경로와같은환경변수설정저장 ~/.kshrc 필요에따라사용자가생성하여사용 자식쉘에서도실행됨 앨리어스설정, set 을이용한환경설정 14
터미널기능설정 터미널옵션기능을설정. 옵션과모드를지정하지않으면현재설정값출력 옵션 -a : 터미널전체옵션값을출력 모드 erase : 삭제키지정 rows : 터미널의행수지정 columns : 터미널의열수지정 사용예 삭제키를백스페이스키로사용 $ cat -n.kshrc 1 alias ls= ls -F 2 stty erase ^H $ 15
환경설정파일설정및실행 경로설정 배시쉘과같은방식으로설정 PATH 환경변수에지정 $ PATH= =/bin:/usr/bin:/usr/ucb:/usr/local/bin: 프롬프트설정 환경변수 PS1 에지정 $ PS1= [$PWD] [/home/user1] PS1= $ $ 사용자초기화파일실행. 명령어를이용하여실행 $../.profile 16
실습하기 ] 콘쉘환경설정하기 [1/2] 1) vi ~/.profile 2) /PATH 3) $ 4) a 5) /usr/local/bin:. 6) Enter 7) export PS1= $PWD!$ 8) ESC 키입력 9) :wq 1) ~/.profile 열기 2) PATH 환경변수설정찾기 3) 줄의마지막으로이동 4) 입력모드로변경 5) /usr/local/bin 디렉토리와현재디렉토리. 를명령을찾는경로로추가 6) 다음줄로이동 7) 프롬프트에현재디렉토리와히스토리번호가나오도록설정 8) 명령모드로변경 9) 저장후종료 17
실습하기 ] 콘쉘환경설정하기 [2/2] 1) rm.kshrc 2) vi.kshrc 3) i 4) alias ls= ls -F 5) alias c=clear 6) alias h=history 7) alias rm= rm -i 8) ESC 9) :wq 10)../.profile 11)../.kshrc 12) echo $PATH 1).kshrc 파일이있으면삭제 2).kshrc 파일편집 3) 입력모드로전환 4) ~ 7) 앨리어스설정 8) 명령모드로전환 9) 저장후종료 10).profile 실행 11).kshrc 파일실행 12) PATH 변수가올바로설정되었는지확인 18
03. C 쉘의주요기능 절대경로 : /bin/csh 기본프롬프트 일반사용자 : % root 사용자 : # 환경설정 환경설정을위해서는환경변수에적절한값을지정 앨리어스기능 히스토리기능 19
C 쉘 환경변수설정 [1/2] 환경변수 ( 전역변수 ) 설정 별도로 export 명령을실행하지않아도자식쉘로상속 setenv 만실행할경우현재설정된환경변수목록출력 ev 명령도환경변수목록출력 사용법 % setenv TERM vt100 % echo $TERM vt100 % setenv [ 환경변수명값 ] 20
C 쉘 환경변수설정 [2/2] set [ 지역변수명 = 값 ] 현재쉘에서만사용할지역변수설정 지역변수명은소문자를사용 인자가없이 set 명령만실행하면현재설정된지역변수목록출력 사용법 % set term=vt100 % 21
C 쉘 앨리어스설정 [1/2] 앨리어스 ( 별칭 ) 명령어에다른이름을정의할수있도록한다. 긴명령어대신짧은명령어를만들어사용할수있다. 여러명령어들을하나의명령어로만들수있다. 지금있는명령어들의대체명령어를만들수있다. 앨리어스를해제할수도있다. 앨리어스를쉘초기화파일에저장하여사용하면편리하다. 22
C 쉘 앨리어스설정 [2/2] alias [ 앨리어스명령 ] unalias 앨리어스 Alias 명령으로설정하고 unalias 명령으로삭제 앨리어스와명령사이에 = 를넣지않음 명령만사용할경우현재앨리어스목록출력 사용법 % alias ls 'ls -alf' % alias c clear % % unalias ls % 23
히스토리기능 사용자가입력했던명령의목록을저장했다가다시사용할수있도록하는기능 히스토리의설정 지역변수의형태로.cshrc 파일에설정 set history=100 명령 100 개를저장할수있다는의미 히스토리저장 로그아웃후에도히스토리가저장되도록설정 set savehist=100 홈디렉토리에.history 파일로저장 24
히스토리목록보기 히스토리목록을출력 옵션 -h : 히스토리번호를생략하고출력 -r : 역순으로출력 숫자 : 최근실행한명령의개수를지정 사용법 % history 1 set history=100 2 ls 3 pwd 4 echo $TERM 5 set 6 history % history [ 옵션 ] 25 % history -h set history=100 ls pwd echo $TERM set history history -h %
히스토리목록보기 역순출력 : -r 출력개수지정 : 숫자 % history -r 8 history -r 7 history -h 6 history 5 set 4 echo $TERM 3 pwd 2 ls 1 set history=100 % % history 3 7 history -h 8 history -r 9 history 3 % 26
명령재실행하기 명령재실행!( 느낌표 ) 를사용! 번호또는! 문자형태로명령재실행!! 는바로이전명령재실행 ^( 캐럿 ) 은이전명령의틀린부분을수정하여재실행 사용법 %!2 echo $TERM vt100 %!p pwd /export/home/user1 % % pwb pwb: 명령어가없음 % ^b^d pwd /export/home/user1 % 27 b 를 d 로수정해재실행
파일명자동완성기능 C 쉘의내장변수인 filec 를설정하면파일명자동완성기능사용 디렉토리에서파일명의앞부분일부를입력하고 Esc 키를입력하면자동으로나머지부분을완성 입력한앞부분이중복되면경고음발생 사용법 % set filec % ls test.txt test1.txt unix.txt % ls t[esc] % ls u[esc] unix.txt % U 로시작하는파일명자동완성 경고음발생 28 % set filec % ls test.txt test1.txt unix.txt % ls te^d text.txt text1.txt % ls te ^D 를입력하면 te 로시작하는목록출력
환경설정파일 시스템초기화파일 기본쉘이 C 쉘인모든사용자가로그인할때실행 /etc/.login 시스템관리자만수정가능 /etc/profile과내용은동일 사용자초기화파일 사용자마다작성하여자신만의환경설정 ~/.login, ~/.cshrc 로그인할때.cshrc 파일이먼저실행되고,.login 파일실행.login 로그인할때한번만실행 환경변수, 터미널설정.cshrc 로그인할때, 서브쉘생성시 쉘변수, 앨리어스, 히스토리설정 29
환경설정파일.login 파일 % cp local.login.login % cat -n.login 1 # 2 # Copyright 2005 Sun Microsystems, Inc. All rights reserved. 3 # Use is subject to license terms. 4 # 5 # ident "%Z%%M% %I% %E% SMI" 6 stty -istrip 7 # setenv TERM `tset -Q -` 터미널설정 $ 30
환경설정파일.logout 로그아웃할때실행 임시파일정리, 히스토리파일정리, 로그아웃시간기록.cshrc 경로설정, 프롬프트변경등의내용저장 % cp local.cshrc.cshrc % cat -n.cshrc 1 # 2 # Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. 3 # 4 umask 022 5 set path=(/usr/bin /usr/ucb) 6 if ( $?prompt ) then 7 set history=32 8 endif % 31
프롬프트변경 프롬프트변경 % set prompt= cookbook!> cookbook 33> set prompt= Unix] Unix] set prompt= % %! 는히스트리번호 32
초기화파일실행하기 source 초기화파일 환경설정파일을처음작성하였거나수정했을때이를적용하기위한명령 사용예 % source.cshrc % source.login 33
[ 실습하기 ] C 쉘환경설정.cshrc 파일에작업 # # Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. # umask 022 set path=(/usr/bin /usr/ucb) if ( $?prompt ) then set history=32 endif 1) 경로에 /usr/local/bin 과현재디렉토리추가 2) 히스토리크기를 500으로변경 3) 앨리어스설정 ls가 ls -af를실행한다. c는 clear 명령을실행한다. h는 history 명령을실행한다. rm은 rm -i를실행한다. 4) 프롬프트는히스토리번호가나오도록수정 5) 저장하고설정내용적용토록실행 34
쉘의기능 12 장요약 [1/2] 명령어해석기기능 : 명령을해석하고적절한프로그램을실행 프로그래밍기능 : 반복적으로수행하는작업을하나의프로그램으로만들수있음 사용자환경설정기능 : 경로설정, 기본권한설정, 환경변수설정등사용자들이자신의필요에따라사용환경의특성을초기화파일에설정 35
12 장요약 [2/2] 구분콘쉘 C 쉘배시쉘 명령 /usr/bin/ksh /usr/bin/csh /usr/bin/bash 기본프롬프트 $ % $ 환경변수설정변수명 = 값, export 변수명 setenv 변수명값변수명 = 값, export 변수명 쉘변수설정변수명 = 값 set 변수명 = 값변수명 = 값 환경설정파일 /etc/profile, ~/.profile, ~/.kshrc /etc/.login, /.cshrc, ~/.login, ~/.logout /etc/profile, /etc/basrhc, ~/bash_profile, ~/.bashrc, ~/bash_login, ~/.profile 설정파일실행점 (.) 명령 source 명령 source 명령, 점 (.) 명령 경로지정 PATH=/bin:/usr/bin: export PATH set path=(/bin /usr/bin) PATH=/bin:/usr/bin: export PATH 앨리어스 alias 앨리어스 = 명령 alias 앨리어스명령 alias 앨리어스 = 명령 히스토리 HZ=100, ~/.sh_history set history=100 set savehistory=100 ~/.history HISTSIZE=100 HISTFILESIZE=100 ~/.bash_history 명령재실행 r 번호, r 문자, r! 번호,! 문자,!!! 번호,! 문자,!! 파일명자동완성 [Tab] set filec, [ESC] [Esc] 또는 [Tab] 프롬프트설정 PS1= $ set prompt= % PS1= $ 방향키위 / 아래 / 좌 / 우명령이동 - 위 / 아래 / 좌 / 우명령이동 36