UNIX 및실습 5 장. Bash 활용하기
학습목표 5 장. Bash 활용하기 Bash 쉘이제공하는다양한기능을이해하고활용한다. 환경변수를이용해작업의효율을높이는환경을설정하는방법을익힌다. 환경설정파일을이용해자신만의환경을설정하는방법을익힌다. 2
Section 03 Bash 쉘환경설정 변수 시스템이나사용자에의해사용되는정보를저장하기위한저장소 쉘변수는관례적으로대문자를사용 쉘 ( 지역 ) 변수 현재의쉘에서만사용가능한변수 확인명령 : set 환경 ( 전역 ) 변수 전체쉘에서사용가능한변수 확인명령 : env 3
단순변수 (simple variable) 하나의값 ( 문자열 ) 만을저장할수있는변수 이름 = 단어 CITY=seoul 변수의값사용 echo $CITY seoul 변수에어느때나필요하면다른값을대입 CITY=pusan 한번에여러개의변수를생성 COUNTRY=korea CITY=seoul 4
단순변수 한글문자열을값으로사용 COUNTRY= 대한민국 CITY= 서울 echo $COUNTRY $CITY 대한민국서울 따옴표를이용하면여러단어로구성된문자열을저장 ADDRESS=" 서울시용산구청파동 " 5
리스트변수 (list variable) 한변수에여러개의값 ( 문자열 ) 을저장할수있는변수 이름 =( 단어리스트 ) CITIES=( 서울부산목포 ) 리스트변수사용 리스트사용 ${name[i]} ${name[*]} ${name[@]} ${#name[*]} ${#name[@]} 의미리스트변수 name의 i번째원소리스트변수 name의모든원소리스트변수 name 내의원소개수 6
리스트변수사용예 리스트변수사용 echo ${CITIES[*]} 서울부산목포 echo ${CITIES[1]} 서울 리스트의크기 echo ${#CITIES[*]} # 리스트크기 3 echo ${CITIES[4]} 리스트변수에새로운도시추가 cities=(${cities[*] 제주 ) echo ${CITIES[4]} 제주 7
표준입력읽기 read 명령어 표준입력에서한줄을읽어서단어들을변수들에순서대로저장 남은단어들은마지막변수에모두저장 사용법 : $ read 변수 1,..., 변수 n 예 1: read X Y Merry Christmas! echo $X Merry echo $Y Christmas! 예 2 : 변수를하나만사용 read X Merry Christmas! echo $X Merry Christmas! 8
환경변수와지역변수 쉘변수 환경변수와지역변수두종류로나눌수있다. 환경변수는값이자식프로세스에게상속되며지역변수는그렇지않다. 9
환경변수와지역변수예 COUNTRY= 대한민국 CITY= 서울 export COUNTRY echo $COUNTRY $CITY 대한민국서울 sh echo $ COUNTRY $CITY 대한민국 ^D echo $ COUNTRY $CITY 대한민국서울 10
사전정의환경변수 (predefined environment variable) 그의미가미리정해진환경변수들 이름 의미 $USER $TERM $PATH $HOME $SHELL $MAIL 사용자이름터미널타입명령어를검색할디렉터리들의리스트홈디렉터리로그인쉘의경로명메일박스의경로명 $HOSTNAME 호스트이름 echo 홈 =$HOME 사용자 =$USER 쉘 =$SHELL 홈 =/home/kgu 사용자 =kgu 쉘 =/bin/bash 11
Bash 쉘환경변수 Bash 쉘변수정의 쉘변수 : 변수 = 값 환경변수 : export 변수 = 값 변수값확인 echo $ 변수 변수정의해제 unset 변수 ssh lily.mmu.ac.kr $ ATEST=test $ export ATEST $ ssh lily.mmu.ac.kr $ echo $ATEST test $ ssh lily.mmu.ac.kr $ unset ATEST $ echo $ATEST $ env 12
[ 실습하기 ] Bash 쉘환경변수 실습하기 1) env 2) set 3) export 4) MYVAR=user1 5) sh 6) env 7) exit 8) export MYVAR 9) sh 10)echo $MYVAR 11)exit 12)unset MYVAR 1) env 로환경변수출력 2) set 으로쉘변수출력 3) export 로환경변수출력 4) 쉘변수 MYVAR 정의 5) sh 로전환 ( 서브쉘 ) 6) 환경변수를출력하여, 그중에 MYVAR 가있는지확인 7) 다시 bash 로전환 8) MYVAR 를 export 하여전역변수로바꿈 9) 다시 sh 로전환 10)MYVAR 값을출력 11)bash 로돌아감 12)MYVAR 변수를해제 13
04. 배시쉘명령다루기 쉘에서명령을편리하게입력하고실행하기위한여러가지기능들 나만의명령만들기 : 앨리어스 이전에입력한명령사용하기 : 히스토리 명령어편집하기 14
Bash 쉘명령다루기 alias alias [ 별칭 = 명령 ] unalias 별칭 명령어에다른이름을정의하여사용 긴명령어대신짧은별칭을사용 자주사용하는옵션자동수행 여러명령을하나의명령으로대체가능 명령 현재설정값보기 : alias 앨리어스설정 : alias 별칭 = 명령 앨리어스해제 : unalias 별칭 15
Bash 쉘명령다루기 alias 현재설정된 alias ssh lily.mmu.ac.kr $ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d.* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' alias 설정 ssh lily.mmu.ac.kr $ alias ls= ls xf $ alias cd= cd;pwd $ alias rm= rm -i $ alias 해제 ssh lily.mmu.ac.kr $ unalias rm $ unalias cd $ unalias ls 16
[ 실습하기 ] Bash 쉘명령다루기 - alias 실습하기 1)alias 2)alias c=clear 3)c 4)alias dir= ls -l 5)dir 6)alias home= cd;pwd;ls 7)home 8)alias copy= cp 9)alias move= mv 10)alias ls= ls F 11)ls 12)alias 17 1) 기존 alias 를확인 2) clear 명령의 alias 생성 3) c 를실행 4) ls l 을 dir 로 alias 5) dir 을실행 6) home 이라는이름으로 alias 를생성. 3 개의명령을하나의이름으로실행가능 7) home 실행 8) copy 생성 9) move 생성 10)ls 를 ls F 로변경 11)ls 실행 12)alias 설정확인
히스토리 - fc fc [ 옵션 ] fix command 사용자가입력한명령을기록, 재사용할수있도록함 옵션 히스토리목록에서명령어를선택하거나편집 ~/.bash_history 파일에명령저장 -l 옵션이없으면최근명령을편집기로읽어들임 -l -x y : 히스토리목록에서지정한행이나범위의명령출력 -r : 히스토리목록을역순으로출력 -n : 히스토리에서행번호를제외하고출력 -e : 히스토리목록을편집기로읽어들임 -s : 최근명령을재실행 18
히스토리 - fc 이전명령목록보기 19 ssh lily.mmu.ac.kr $ fc -l 102 pwd 103 cp *.c ~/C 104 alias 105 ls 106 ls /tmp 107! 108 man history 109!99 110 ls 111 history 112 alias 113 unalias history 114 history 115 alias history= fc l 116 history 117 fc -l
명령재실행 명령 설명! 문자! 번호!! 이전에실행했던마지막명령실행명령을반복실행하는!n 기능 n번째명령실행!-n 현재명령에서뒤로 n 번째명령 이벤트지정자 (!) 을이용하여명령실행! 문자열주어진문자열로시작하는명령중마지막명령 < 이벤트명령 >:p!!,!n 등이벤트지정자로시장한명령을실행하지않고화면에출력!? 문자열? 주어진문자열을포함하는명령중마지막명령.? 는선택항목 ^ 문자열 1^ 문자열 2 마지막명령의문자열 1 을문자열 2 로대체하여다시실행 20
Bash 쉘명령다루기 명령재실행 history 목록 ssh lily.mmu.ac.kr $ fc -l 102 pwd 103 cp *.c ~/C 104 alias 105 ls 106 ls /tmp 107! 108 man history 109!99 110 ls 111 history 112 alias 113 unalias history 114 history 115 alias history= fc l 116 history 117 fc -l 21 명령재실행및편집 ssh lily.mmu.ac.kr $!! fc l 103 cp *.c ~/C 104 $!c cp *.c ~/C $!102 /home/user1/unix/ch5 $!115:p alias history= fc l $ ^history^h alias h= fc l $
[ 실습하기 ] Bash 쉘명령다루기 명령 실습하기 재실행 1)history 2)h 3)cd 4)ls a.[a-z]* 5)vi.bash_history 6)!a 7)!l 8)!h 9)! 번호 10)!a:p 11) ^history^h 1) history 확인 2) history 가 h 로 alias 되어있는지확인 3) 홈디렉토리로이동 4) 숨겨진파일목록확인 5).sh_history 파일의내용확인 6) a 로시작하는명령재실행 7) l 로시작하는명령재실행 8) h 로시작하는명령재실행 9) history 목록의번호로재실행 10) l 로시작하는명령을화면에출력 (Enter 키를입력하면실행됨 ) 11) 직전에입력한 alias 명령의 history 를 h 로변경 22
명령편집하기 화살표키이용 이전명령을편집하여다시실행 방법 또는 화살표키를이용하여이전명령을불러옴 또는 화살표키를이용하여수정할위치로커서이동 [Del] 또는 [ ] 키를이용하여수정할내용삭제후새로운내용입력 23
Bash 쉘명령다루기 명령편집 set -o vi set +o vi 명령어라인편집설정 set -o vi 명령어라인에서 vi 명령을이용하여명령편집 ESC 키를누르면편집가능 vi 명령인 k, j 키를이용하여이전명령을호출 h, l, x, r, c 등 vi 편집명령을이용하여명령어편집 set +o vi 명령어편집기능해제 24
[ 실습하기 ] Bash 쉘명령다루기 명령 실습하기 1) man hostory 2) 위화살표입력 3) hos의 o에커서가올때까지 왼쪽화살표입력 4) [back space] 키입력 5) i입력 6) [Enter] 키입력 7) set o vi 8) cd /temp 9) [Esc]+k 10) lll ( 소문자 L 3 개 ) 11) x 12) [Enter] 키입력 편집 1) 잘못된명령입력 (man history가올바른명령 ) 2) 위화살표로이전명령불러옴 3) 좌우화살표로잘못된위치로 커서옮김 4) 삭제키로수정할내용삭제 5) 올바른내용입력 6) [Enter] 키를눌러명령실행 7) 명령어라인편집기능활성화 8) 틀린명령입력 (cd /tmp 가올바른명령 ) 9) [Esc] 키를눌러편집상태로변경 10) vi 의ㅣ이동키로이동 11) 틀린글자삭제 12) 원하는명령에서 Enter 를치면명령실행 25