Post on 31-Dec-2015
description
IT CookBook, 우분투 리눅스
[ 강의교안 이용 안내 ]
• 본 강의교안의 저작권은 한빛아카데미㈜에 있습니다 . • 이 자료를 무단으로 전제하거나 배포할 경우 저작권법 136 조에 의거하여 최고 5 년 이하의 징역 또는 5 천만원 이하의 벌금에 처할 수
있고 이를 병과 ( 倂科 ) 할 수도 있습니다 .
Chapter 04. 셸 사용하기
목차
00. 개요
01. 셸의 기능과 종류
02. 셸 기본 사용법
03. 입출력 방향 바꾸기
04. 배시 셸 환경 설정
05. 에일리어스와 히스토리
06. 프롬프트 설정
07. 환경 설정 파일
학습목표• 셸의 기능을 설명하고 주요 셸의 종류를 나열할 수 있다 .
• 로그인 셸을 다른 셸로 바꿀 수 있다 .
• 셸 특수 문자의 종류를 이해하고 필요에 따라 적절하게 사용할 수 있다 .
• 표준 입출력 장치를 이해하고 입출력 방향 바꾸기를 할 수 있다 .
• 셸 변수와 환경 변수의 차이를 이해하고 변수를 정의하여 사용할 수 있다 .
• 새로운 에일리어스를 만들거나 필요 없는 에일리어스를 해제할 수 있다 .
• 히스토리 기능으로 명령을 재실행할 수 있다 .
• 이스케이프 문자를 이해하고 프롬프트를 원하는 형태로 바꿀 수 있다 .
• 시스템 환경 설정 파일과 사용자 환경 설정 파일을 구분하고 사용자 환경을
설정할 수 있다 .
리눅스 실습 스터디 맵
00 개요
[ 그림 4-1] 4 장의 내용 구성
요약 1. 셸 (p.235)
셸은 사용자와 리눅스 커널 사이에서 중간자 역할을 한다 .
셸은 명령어 해석기 기능 , 프로그래밍 기능 , 사용자 환경설정 기능을
제공한다 .
셸의 종류는 본 셸 , C 셸 , 콘 셸 , 배시 셸 등이 있다 . 본 셸 명령 : sh ( 기본 프롬프트 $)
c 셸 명령 : csh ( 기본 프롬프트 %)
콘 셸 명령 : ksh ( 기본 프롬프트 $)
배시 셸 명령 : bash ( 기본 프롬프트 $, 리눅스 대부분의 기본 로그인 셸 )
예 ) 본 셸로 변경하기
로그인 셸 지정과 변경 : /etc/passwd 파일에 로그인 셸을 지정하며 ,
chsh 명령으로 변경할 수 있다 .
02 셸 기본 사용법 (p.189-191)
기본 로그인셸 확인
사용가능 셸 확인
user1@myubuntu:~$ grep user1 /etc/passwduser1:x:1000:1000:user1,,,:/home/user1:/bin/bashuser1@myubuntu:~$
user1@myubuntu:~$ cat /etc/shells# /etc/shells: valid login shells/bin/sh/bin/dash/bin/bash/bin/rbashuser1@myubuntu:~$
chsh –l 도 같은 기능페도라는 되고 , 우분투는 안됨
02 셸 기본 사용법 (p.189-191)
기본 로그인셸 변경
셸 내장명령 셸이 자체적으로 가지고 있는 명령 예 ) cd, alias, export 등 ..
참고 ) 일반 명령은 /bin 이나 /usr/bin 밑에 들어 있음
user1@myubuntu:~$ chsh -s /bin/sh user1암호 :user1@myubuntu:~$ tail /etc/passwd( 생략 )user1:x:1000:1000:user1,,,:/home/user1:/bin/shuser1@myubuntu:~$ chsh –s /bin/bash user1
사용자 user1 의 로그인 셸을 /bin/sh 로 변경
결과 확인
다시 /bin/bash 셸로 변경
user1@myubuntu:~$ file /bin/pwd/bin/pwd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamicallylinked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x5bc8aca164f86961368a41a06a0f7487f853d9d2, strippeduser1@myubuntu:~$
pwd 는 일반 명령
요약 2. 셸 특수 문자 (p.235)
특수문자 기능 예* 임의의 문자 또는 문자열 $ ls t*
? 임의의 한 문자 $ ls t?.txt
[] 한 문자 위치를 위한 문자의 범위 표시 $ ls [0-9]*
~ 홈 디렉터리 $ cd ~user1
- 이전 디렉터리 $ cd -
; 한 행에 여러 개 명령 입력 $ date; ls; pwd
| 왼쪽 명령의 결과를 오른쪽 명령의 입력으로 전달
$ ls –al | more
‘’ 모든 셸 문자 무시 $ echo ‘$HOME’
“” $, ’, \ 을 제외한 모든 셸 문자 무시 $ echo “$HOME”
`` 셸 명령 실행 $ echo `date`
\ 특수 문자 기능 제거 $ echo \$HOME
$ cd /etc
$ echo $HOME
요약 3. 입출력 방향 바꾸기 ( 리다이렉션 )
출력 방향 바꾸기 : > ( 덮어쓰기 ), >> ( 추가 ) 예 : ls –al
ls –al > ls. out
cat ls.out
오류 방향 바꾸기 : 2> 예 : find ~ -name tmp.txt
find ~ -name tmp.txt 2> /dev/null
입력 방향 바꾸기 : < 예 : cat < out.txt
요약 4. 셸 변수와 환경 변수
셸 변수 : 지정한 셸에서만 사용
환경 변수 : 전체 셸에서만 사용
동작 설정방법 예
변수 정의 [ 셸 변수 ] 변수이름 = 문자열
[ 환경변수 ] export 변수이름 = 문자열
$ data=321$ echo $data321$ export PS=“Linux $”$ echo $PSLinux $
변수 정의 해제 unset 변수 $ unset data
전체 변수 출력 셸변수와 환경변수 모두 출력 : set환경변수만 출력 : env
$ set$ env
특정 변수 출력 echo $ 변수 $ echo $HOME
주의 ) = 사이에 공백을주면 안됨
요약 4. 셸 변수와 환경 변수
주요 환경변수
특정 변수 출력하기 : echo (p.208) 변수의 값을 출력할 때는 변수 이름 앞에 특수 문자 $ 를 붙임
환경변수 의미 환경변수 의미HISTSIZE 히스토리 저장크키 PATH 명령을 탐색할 경로HOME 사용자 홈 디렉터리
절대경로PWD 작업 디렉터리 절대 경로
LANG 사용하는 언어 SHELL 로그인 셸LOGNAME 사용자 계정 이름
$ history
user1@myubuntu:~/linux_ex/ch4$ echo $SHELL/bin/bashuser1@myubuntu:~/linux_ex/ch4$
요약 5. 에일리어스와 히스토리
에일리어스 : 명령에 다른 별칭을 붙이는 것
현재 설정되어 있는 alias 보기
에일리어스 생성 alias 이름 =‘ 명령’ alias ls=‘ls -lF ’
에일리어스 해제 unalias 에일리어스 unalias ls
user1@myubuntu:~/linux_ex/ch4$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo er-ror)""$(history|tail -n1|sed -e ' ₩ ''s/^ ₩ s*[0-9] ₩ + ₩ s*//;s/[;&|] ₩ s*alert$//' ₩ '')"'alias egrep='egrep --color=auto‘alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'user1@myubuntu:~/linux_ex/ch4$
좌우공백을 주면 안됨
에일리어스 설정하기 (p.213)
에일리어스 설정 예 : rm
user1@myubuntu:~/linux_ex/ch4$ alias rm='rm -i'user1@myubuntu:~/linux_ex/ch4$ rm ls.outrm: 일반 파일 ‘ ls.out '을 제거할까요 ? nuser1@myubuntu:~/linux_ex/ch4$
요약 5. 에일리어스와 히스토리
히스토리 : 사용한 명령을 기억했다가 재실행하는 것
히스토리 목록 보기 history
이전 명령 불러오기 !c (c 로 시작하는 최근 명령 수행 )!120 (120 번째 명령 수행 )!! ( 바로 이전 명령 다시 수행 )
명령 편집 화살표 키 (↑,↓) 를 사용하여 명령을 불러오고 수정할 수 있다 .
요약 6. 프롬프트 설정
프롬프트는 환경 변수 PS1 에 저장한다 .
터미널을 제어하는 특수 문자를 사용하면 컬러 프롬프트를 만들 수 있다 .
예 ) PS1=“\[\e[33;45;7m\]\u@\h $ \[\e[0;0m\]”
드래그해서 마우스우클릭해 복사하기
마우스 우클릭해 붙여넣기
요약 7. 환경 설정 파일
시스템 환경설정파일 시스템을 사용하는 전체 사용자의 공통환경을 설정하는 파일
사용자 환경설정파일로 구분된다 . 특정 사용자만의 환경을 설정하는 파일
로그인 시 시스템 환경설정파일 사용자 환경설정파일 순서로 실행하여
사용자 환경을 설정한다 .
요약 7. 환경 설정 파일
배시 셸의 시스템 환경 설정 파일
파일 기능/etc/profile 본 셸이나 본 셸과 호환되는 모든 셸에 공통으로 적용되는
profile 이다 .• 배시셸의 경우 /etc/bash.bashrc 파일을 실행한다 .• 배시셸이 아닌 경우 프롬프트를 #(root 사용자 ) 나 $
( 일반사용자 ) 로 설정한다 .• /etc/profile.d/*.sh 파일을 실행한다 .
/etc/bash.bashrc
시스템 공통으로 적용되는 .bashrc 파일이다 .• 기본 프롬프트를 설정한다 .• sudo 명령과 관련된 힌트를 설정한다 .
/etc/profile.d/*.sh
• 언어나 명령별로 각각 필요한 환경을 설정한다 .• 필요시 설정파일을 추가한다 .
$ more /etc/profile
$ more /etc/bash.bashrc
$ ls /etc/profile.d/*.sh$ more /etc/profile.d/bash_completion.sh
요약 7. 환경 설정 파일
배시 셸의 사용자 환경 설정 파일
파일 기능~/.profile • 경로 추가 등 사용자가 정의하는 환경을 설정한다 .
• .bashrc 파일이 있으면 설정한다 .
~/.bashrc • 히스토리의 크기를 설정한다 .• 기본 에일리어스나 함수 등을 설정한다 .
~/.bash_aliases • 사용자가 정의한 에일리어스를 별도 파일로 저장한다 .
~/.bash_logout • 로그아웃 시 실행할 필요가 있는 함수 등을 설정한다 .$ more ~/.profile$ more ~/.bashrc$ more ~/.bash_aliases$ more ~/.bash_logout
따라해보기 ) 204 쪽 특수 문자와 입출력 방향 바꾸기
① 현재 디렉터리에서 l 로 시작하는 모든 파일의 상세 정보를 확인한다 .
② 임시로 사용할 temp 디렉터리를 만든다 .
③ l 로 시작하는 모든 파일을 temp 디렉터리로 이동한다 .
④ Uname 명령은 운영체제의 이름을 출력한다 . 특수 문자 `` 를 사용하여
‘ This is Linux System.’ 이라는 문장을 출력한다 .
⑤ 출력 방향 바꾸기로 4 번 명령의 실행 결과를 u.out 파일에 저장한다 .
⑥ date 명령의 실행 결과를 u.out 파일에 저장한다 .
혼자해보기 ) 205 쪽 특수문자와 입출력 방향 바꾸기
① 특수 문자 * 를 사용하여 temp 디렉터리로 이동한 모든 파일을 현재
디렉터리로 복사한다 .
② uname -n 은 호스트 이름을 출력한다 . 특수 문자 ` ` 를 사용하여 ‘ This
system name is ****.’ 와 같이 출력되도록 명령을 실행한다 . ****
에는 실제 호스트 이름이 출력되어야 한다 .
③ ② 번에서 실행한 결과를 출력 방향 바꾸기로 un.out 파일에 저장한다 .
④ 현재 디렉터리의 파일 목록을 출력 방향 바꾸기로 ls.out 파일에 저장한다 .
⑤ un.out, ls.out 파일의 내용을 모두 출력 방향 바꾸기를 사용하여 u.dat
파일에 추가한다 . 이 명령은 한 번에 실행해야 한다 .
따라해보기 ) 218 쪽 환경 변수와 에일리어스 , 히스토리
① 셸 변수 TESTA 를 testa 로 설정하고 출력한다 .
② 본 셸 (sh) 을 실행해 서브 셸로 이동한다 .
③ 셸 변수 TESTA 가 출력되는지 확인한다 . 왜 출력되지 않을까 ?
④ 서브 셸에서 로그인 셸로 복귀한다 .
⑤ Pwd 명령과 ls 명령을 묶어서 에엘리어스 pls 를 만든다 .
⑥ 위 화살표 키를 사용해 이전 명령을 불러서 clear 명령에 대한 에일리어스
c 를 만든다 .
따라해보기 ) 230 쪽 사용자 환경 설정 파일 수정하기
① Vi 로 .profile 파일을 vi 로 연다
② .profile 파일의 내용에 행 번호가 보이도록 한다
③ 22 행의 다음에 아래의 경로를 추가하고 파일을 저장한 후 종료한다 . PATH=“$PATH:/etc”
④ Vi 로 .bashrc 파일을 연다 .
⑤ 62 행의 맨 앞에 # 을 붙이고 62 행의 다음에 아래의 프롬프트 설정을
추가한 후 저장한다 . PS1=‘${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ‘
⑥ .profile 파일을 실행한다 . 그러면 프롬프트가 바뀐다 .
⑦ 경로에 /etc 디렉터리가 추가되었는지 확인한다 .
혼자해보기 ) 232 쪽 사용자 환경 설정 파일 수정하기
① .profile 파일을 vi 로 연다 .
② .profile 파일에서 23 행에 추가한 경로를 삭제하고 파일을 저장한 후
종료한다 .
③ vi 로 .bashrc 파일을 연다 .
④ 프롬프트가 다음과 같은 형태로 나오도록 수정한다 . 1004 는 히스토리
번호이다 . (63 행을 수정한다 )
[user1@myubuntu ~ 355]$
⑤ 변경된 환경 설정 파일을 적용한다 . 프롬프트가 바뀌었는가 ?
⑥ 경로에서 /etc 가 삭제되었는지 확인한다 .
실습을 다했으면 .bashrc 파일에 삽입한 63 행을 지우고 , 62 행 맨 앞의 #
을 삭제해 원래대로 되돌린다 .