5장. 콘 쉘 활용하기
UNIX 및 실습
5장. 콘 쉘 활용하기
학습목표
콘 쉘이 제공하는 다양한 기능을 이해하고 활용한다.
환경변수를 이용해 작업의 효율을 높이는 환경을 설정하는 방법을 익힌다.
환경 설정 파일을 이용해 자신만의 환경을 설정하는 방법을
익힌다.
Section 01 기본 사용법 익히기
쉘 ?
사용자와 커널 사이의 중간 역할
사용자가 입력한 명령을 처리 하고 실행 결과를 알려줌
쉘의 종류
본쉘, 콘쉘, C쉘, 배시쉘,…
로그인 쉘, 서브쉘
로그인쉘과 서브쉘
로그인 쉘과 서브쉘
로그인 쉘 : 사용자가 로그인한 직후 자동 생성되는 쉘
서브쉘 : 사용자가 직접 실행한 쉘
telnet hanbitbook.co.kr
$ csh
% ksh
$ exit
% exit
$
ksh
csh
ksh
login logout
로그인쉘
서브쉘 exit
exit exit
문자열 출력
echo
쉘 명령과 유틸리티 모두 제공
지정한 문자열 출력
쉘 명령
옵션이 제공되어 echo 보다 편리
사용법
telnet hanbitbook.co.kr
$ echo ‘test’
test
$ print ‘I love UNIX!!’
I love UNIX!!
$
쉘 특수 문자 - 종류
메타문자 기능 예제
; 한 줄에 여러 개의 명령 입력 $ date;cal;ls
* 임의의 문자 또는 문자들 $ ls h*
? 임의의 한 문자 $ ls dir?
[ ] 한 문자 위치를 위한 문자의 범위 표시 $ ls [a-f]*
>, >>, < 입출력 방향 전환 $ ls > ls.out
| 명령어 파이핑 $ ls –l /etc | more
~ 홈 디렉토리 $ cd ~user1
- 이전 작업 디렉토리 $ cd -
‘ ‘ 모든 쉘 문자 무시 $ print ‘$SHELL’
“ “ $, `, \를 제외한 모든 쉘 문자 무시 $ print “$SHELL”
` ` 쉘 명령 수행 $ print `date`
\ 특수문자 기능 제거 $ print “\$SHELL”
쉘 특수 문자 -사용예제
; : 명령 연결
? : 임의의 한문자
* : 임의의 문자열
[ ] : 범위내의 한문자
telnet hanbitbook.co.kr
$ mkdir ~/unix/ch5
$ cd ~/unix/ch5
$ pwd ; touch a.txt b.txt; ls /export/home/user1/unix/ch5 a.txt b.txt
$
telnet hanbitbook.co.kr
$ ls *.txt a.txt b.txt
$
telnet hanbitbook.co.kr
$ touch ab.txt
$ ls *.txt a.txt b.txt
$
telnet hanbitbook.co.kr
$ ls [ab].txt a.txt b.txt
$
쉘 특수 문자 - 사용예제
- : 이전작업디렉토리
‘ ‘ , “ ” : 문자열 묶기
` ` : back quotation
telnet hanbitbook.co.kr
$ pwd
/export/home/user1/unix/ch5
$ cd /tmp
$ pwd /tmp
$ cd -
$ pwd
/export/home/user1/unix/ch5
$ cd –
$ pwd /tmp
$ cd -
telnet hanbitbook.co.kr
$ echo ‘$SHELL’
$SHELL
$ echo “$SHELL”
/bin/ksh
$
telnet hanbitbook.co.kr
$ echo “Today: `date`”
Today : 2007년 4월 25일 화요일 오후 02시 15분 04초
$`
[실습하기] 쉘 특수 문자
실습하기
1) cd ../ch3 2) ls
3) ls f*
4) ls *.c 5) ls *
6) ls file?
7) ls file[2-3]
8) cd /etc 9) pwd
10)cd - 11) pwd
12) cd ../ch5
1)
2) 디렉토리 내용 확인
3) f 로 시작하는 모든 파일 출 4) .c로 끝나는 모든 파일 출력 력 5) 모든 파일 출력
6) file_ 파일 출력 7) file2, file3 출력 8) /etc로 이동 9) 현재 경로 확인
10)이전 작업디렉토리로 이동 11)현재 경로 확인
12)5장 디렉토리로 이동
[실습하기] 쉘 특수 문자
실습하기
1) print “abc”
2) print ‘$TERM’
3) print “$TERM”
4) print “현재 시스템은 `uname –a`입니다.”
1) print : 화면에 출력
2) $로 시작하면 쉘 변수. ‘ ‘안에서는 모 든 특수문자가 그 의미를 잃어버림. 그 냥 $TERM 출력
3) “ “ 안에서는 쉘 변수 값 출력 4) ` ` 은 명령의 실행 결과 출력
쉘 특수 문자 - 파이프
한 명령의 실행결과를 다음 명령의 입력으로 전달
| (파이프) 양쪽에 명령이 와야 함
사용법
$ 명령1 | 명령2 | 명령3
telnet hanbitbook.co.kr
$ ls /etc | more
[ 실습하기] 쉘 특수 문자 – 파이프 실습
실습하기
1)ls /etc
2)ls /etc > ls.out 3)more ls.out
4)ls /etc | more 5)ps -ef
6)ps -ef | more
1) ls /etc 의 결과는 한 화 면에 다 보이지 않음
2) ls /etc 의 결과를 파일에 저장 (다음절에 배움)
3) more 명령을 이용하여 파일을 한 화면씩 출력 4) 파이프를 이용한 결과와
3)의 결과 비교
5) 현재 서버에서 실행중인 프로세스 목록 출력
6) 목록을 한 화면씩 출력
Section 02 입출력 방향 변경
표준 입력
Standard input
프로그램 실행에 필요한 데이터를 읽어드리는 기본 장치
기본 표준 입력은 키보드
표준 출력
Standard output
프로그램의 실행 결과를 출력하는 장치
기본 표준 출력은 모니터
표준 오류
Standard error
프로그램 실행중 발생한 오류 메시지를 출력하는 장치
기본 표준 오류는 모니터
입출력 방향 변경
표준 입출력 장치를 변경시 특수 기호 사용
리다이렉션 : 표준 입출력 파일의 변경
표준 입력
표준 출력
표준 오류 명령어
수행
1) 키보드 2) 파일
1) 모니터 2) 파일
1) 모니터 2) 파일
<
>, >>
2>
입출력 방향 변경 – 출력 리다이렉션
표준출력을 모니터에서 파일로 변경
> : 새로운 파일로 생성, 기존 파일의 내용은 없어짐
>> : 기존 파일의 끝에 내용 추가
사용법
$ 명령 > 파일명
$ 명령 >> 파일명
telnet hanbitbook.co.kr
$ ls –al > test
$ date > test
$ cat test
2007년 5월 1일 화요일 오후 2시 30분
$ pwd >> test
$ cat test
test파일의 내용은 무엇일까?
[실습하기] 입출력 방향 변경 – 출력 리다이렉션
실습하기
1) ls -al
2) ls -al > ls.out 3) cat ls.out
4) pwd > ls.out 5) cat ls.out
6) date >> ls.out 7) cat ls.out
1) 결과가 모니터로 출력 2) 결과가 파일로 저장 3) 파일 내용 확인
4) 결과가 파일로 저장
5) 파일 내용에서 2)의 결과 는 어떻게 되었는가?
6) 명령의 결과를 파일에 추 가
7) 파일 내용은 어떻게 되었 는가? 4)의 결과는 어떻게 되었는가?
입출력 방향 변경 – 오류 리다이렉션
표준 오류메시지를 파일에 저장
사용법
$ 명령 2> 파일명
telnet hanbitbook.co.kr
$ ls /ttt
해당 파일이나 디렉토리가 없음
$ ls /ttt 2> ls.err
$ cat ls.err
해당 파일이나 디렉토리가 없음
$
[실습하기] 입출력 방향 변경 – 오류 리다이렉션
실습하기
1) ls /test
2) ls /test 2> ls.err 3) cat ls.err
4) rm ls.out ls.err
5) ls /var /test 1> ls.out 2> ls.err 6) cat ls.out
7) cat ls.err
8) rm ls.out ls.err
9) ls /var /test 1> ls.out 2>&1 10)cat ls.out
1) 오류메시지가 화면으로 2) 오류메시지가 파일에 출력 3) 파일 내용 확인 저장
4) 파일 삭제
5) 결과는 ls.out으로 오류 메시지는 ls.err로 저장 6) 파일 내용을 확인
7) 파일 내용을 확인 8) 파일 삭제
9) 결과와 오류메시지를 같은 ls.out 파일로 저장 10)파일 내용을 확인
입출력 방향 변경 – 입력 리다이렉션
표준 입력을 키보드에서 파일로 변경
사용법
$ 명령 < 파일명
telnet hanbitbook.co.kr
$ cat < loveletter I love UNIX!
$
[실습하기] 입출력 방향 변경 – 입력 리다이렉션
실습하기
1)vi loveletter
• I love UNIX! 입력
2)mailx user1 < loveletter 3)Mailx
? 1
I love UNIX!
? d
? q
1) 메일 내용을 미리 파일로 2) 자신에게 메일 전송 작성
3) mailx 툴을 이용하여 메 일 확인
1) 메일번호 입력 2) d : 메일 삭제 3) q : mailx 종료
Section 03 콘 쉘 환경 설정
변수
시스템이나 사용자에 의해 사용되는 정보를 저장하기 위한 저장소
쉘 변수는 관례적으로 대문자를 사용
쉘(지역) 변수
현재의 쉘에서만 사용 가능한 변수
확인 명령 : set
환경(전역) 변수
전체 쉘에서 사용 가능한 변수
확인 명령 : env
콘 쉘 환경 변수
콘쉘 변수 정의
쉘 변수 : 변수=값
환경 변수 : export 변수=값
변수 값 확인
print $변수
echo $변수
변수 정의 해제
unset 변수
telnet hanbitbook.co.kr
$ ATEST=test
$ export ATEST
$
telnet hanbitbook.co.kr
$ echo $ATEST test
$
telnet hanbitbook.co.kr
$ unset ATEST
$ echo $ATEST
$ env
[실습하기] 콘 쉘 환경 변수
실습하기
1) env 2) set
3) export
4) MYVAR=user1 5) csh
6) env 7) exit
8) export MYVAR 9) csh
10)print $MYVAR 11)exit
12)unset MYVAR
1) env로 환경변수 출력 2) set으로 쉘변수 출력 3) export로 환경변수 출력 4) 쉘 변수 MYVAR 정의 5) csh로 전환 (서브쉘)
6) 환경변수를 출력하여, 그중 에 MYVAR가 있는지 확인 7) 다시 ksh로 전환
8) MYVAR를 export하여 전역 변수로 바꿈
9) 다시 csh로 전환 10)MYVAR값을 출력 11)ksh로 돌아감
12)MYVAR 변수를 해제
Section 04 콘 쉘 명령 다루기 – alias
명령어에 다른 이름을 정의하여 사용
긴 명령어 대신 짧은 별칭을 사용
자주 사용하는 옵션 자동 수행
여러 명령을 하나의 명령으로 대체 가능
명령
현재 설정값 보기 : alias
앨리어스 설정 : alias 별칭=명령
앨리어스 해제 : unalias 별칭
alias [ 별칭=명령 ]
unalias 별칭
콘 쉘 명령 다루기 - alias
현재 설정된 alias alias 설정
alias 해제
telnet hanbitbook.co.kr
$ alias
autoload='typeset -fu' command='command '
functions='typeset -f' h=history
history='fc -l'
integer='typeset -i' local=typeset
nohup='nohup ' r='fc -e -'
stop='kill -STOP'
suspend='kill -STOP $$'
telnet hanbitbook.co.kr
$ alias ls=‘ls –F’
$ alias cd=‘cd;pwd’
$ alias rm=‘rm -i’
$
telnet hanbitbook.co.kr
$ unalias rm
$ unalias cd
$ unalias ls
[실습하기] 콘 쉘 명령 다루기 - 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
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 설정 확인
콘 쉘 명령 다루기 - history
사용자가 입력한 명령을 기록, 재사용 할 수 있도록 함
~/.sh_history 파일에 저장
기본적으로 128개의 명령이 저장
history 명령 사용시 화면에는 최근 16개의 명령 출력
옵션
-숫자
출력할 명령 개수 지정
가장 최근 명령으로 출력
history [옵션]
콘 쉘 명령 다루기 – history
history 목록 최근 3개 명령만 보기
telnet hanbitbook.co.kr
$ history 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
telnet hanbitbook.co.kr
$ history -3
115 alias history=‘fc –l’
116 history 117 fc -l
$
콘 쉘 명령 다루기 – 명령 재실행
이미 정의되어 있는 alias
History 목록의 명령어를 재실행
r 문자
지정한 문자로 시작하는 가장 최근의 명령 재실행
r 번호
지정한 history 번호의 명령 재실행
r 문자
r 번호
콘 쉘 명령 다루기 – 명령 재실행
history 목록 문자 이용
숫자 이용
telnet hanbitbook.co.kr
$ r c
cp *.c ~/C
$
telnet hanbitbook.co.kr
$ r 116 History 123 cd ..
124
…
telnet hanbitbook.co.kr
$ history 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
[실습하기] 콘 쉘 명령 다루기 – 명령 재실행
실습하기
1)history 2)h
3)cd
4)ls –a .[a-z]*
5)vi .sh_history 6)r a
7)r l 8)r h
9)r 번호
1) history 확인
2) history가 h로 alias되어 있는 지 확인
3) 홈 디렉토리로 이동 4) 숨겨진 파일 목록 확인
5) .sh_history파일의 내용 확인 6) a로 시작하는 명령 재실행 7) l로 시작하는 명령 재실행 8) h로 시작하는 명령 재실행 9) history목록의 번호로 재실
행
콘 쉘 명령 다루기 – 명령 편집
명령어 라인 편집 설정
set -o vi
명령어 라인에서 vi 명령을 이용하여 명령 편집
ESC 키를 누르면 편집 가능
Vi 명령인 k, j 키를 이용하여 이전 명령을 호출
h, l, x, r, c 등 vi편집 명령을 이용하여 명령어 편집
set +o vi
명령어 편집 기능 해제
set -o vi
set +o vi
[실습하기] 콘 쉘 명령 다루기 – 명령 편집
실습하기
1)set –o vi 2)cd /temp 3)Esc+k
4)llll 5)x
6)Enter
1) set –o vi로 명령어 라인 편 집기능 활성화
2) 틀린 명령 입력
3) Esc키를 눌러 편집상태로 변 4) Vi의 ㅣ이동키로 이동 경
5) 틀린 글자 삭제
6) 원하는 명령에서 Enter를 치 면 명령 실행
Section 05 프롬프트 설정하기
콘 쉘의 프롬프트
기본 프롬프트 : $
환경 변수 PS1에 저장된 값을 프롬프트로 사용함
프롬프트 확인
telnet hanbitbook.co.kr
$ echo $PS1
$
$
콘 쉘의 프롬프트 설정
콘 쉘의 프롬프트
기본 프롬프트 : $
환경 변수 PS1에 저장된 값을 프롬프트로 사용함
프롬프트 확인
프롬프트 변경
telnet hanbitbook.co.kr
$ echo $PS1
$
$
telnet hanbitbook.co.kr
$ PS1=‘Unix ’
Unix PS1=‘haha ’ haha
[실습하기] 콘 쉘 프롬프트 설정하기
실습하기
1)PS1= =“[$LOGNAME] “ 2)PS1=“{$PWD} “
3)PS1=“$PWD [!] “
4)PS1=“`uname –n` !$ “
1) 프롬프트를 LOGNAME값으 로 변경
2) 프롬프트를 현재 디렉토리가 나오도록 변경
3) 현재 디렉토리와 히스토리 라인번호(!)가 나오도록 수정 4) 호스트명과 일련번호가 나오
게 수정
컬러 프롬프트 설정
이스케이프 시퀀스
터미널 제어를 위해 정의된 문자열
Esc(^[)로 시작한다.
‘^[‘는 ‘Ctrl-v [‘ 이다.
컬러 프롬프트 설정
^[ : 이스케이프 문자(esc)
[x;y;nm : 특별한 기능이 정의된 문자열
x, y : color 번호
n : 특수 기능
PS1=“^[[x;y;nm 프롬프트 ^[[x;y;0m”
컬러 프롬프트 설정
특수기능번호
번호 기능
0 기본색
1 굵게
4 흑백에서 밑줄
5 반짝임
7 역상
10 기본 폰트
38 밑줄 사용가능
39 밑줄 사용 불가능
컬러 프롬프트 설정
컬러번호
컬러 글자색번호 배경색번호
검정색 30 40
빨강색 31 41
녹색 32 42
갈색 33 43
파랑색 34 44
보라색 35 45
청록색 36 46
흰색 37 47
컬러 프롬프트 설정
프롬프트를 파란색으로 굵게
프롬프트를 파란색으로 보통
telnet hanbitbook.co.kr$ PS1=“^[[34;1mUnix $ ^[[0;0m”
Unix $ ls
…
telnet hanbitbook.co.kr
$ PS1=“^[[34mUnix $ ^[[0m”
Unix $ ls
…
컬러 프롬프트 설정
프롬프트를 밑줄 넣고 빨간색으로
프롬프트를 파란색 역상으로
telnet hanbitbook.co.kr$ PS1=“^[[31;4mUnix $ ^[[0;0m”
Unix $ ls
…
telnet hanbitbook.co.kr
$ PS1=“^[[34;7mHaHa $ ^[[0m”
HaHa $ ls
… HaHa $
컬러 프롬프트 설정
프롬프트를 파란색 현재 디렉토리로
프롬프트를 녹색, 호스트 이름으로
telnet hanbitbook.co.kr$ PS1=“^[[34;0m[$PWD]$ ^[[0;0m”
[/export/home/user1/unix/ch5]$ ls
…
telnet hanbitbook.co.kr
$ PS1=“^[[32;1m user1@`uname –n`
$ ^[[0m”
user1@hanbit $ ls
…
Section 06 환경설정 파일 설정하기
초기화 파일
쉘이 시작할 때 실행되는 명령어와 변수 설정 저장
로그인 할 때 실행
종류 : 시스템 초기화 파일, 사용자 초기화 파일
시스템 초기화 파일
시스템을 사용하는 전체 사용자의 공통 환경설정
/etc 디렉토리에 위치
시스템 관리자가 관리
사용자 초기화 파일
사용자 홈 디렉토리에 위치
사용자별 환경 설정 : 프롬프트, 경로, 앨리어스 등
환경 설정 파일
쉘에 따른 시스템 초기화 파일
쉘 시스템초기화파일 사용자초기화파일
본쉘 1. /etc/profile 2. $HOME/.profile
콘쉘 1. /etc/profile
2. $HOME/.profile
(ENV=$HOME/.kshrc;export ENV) 3. $HOME/.kshrc
C쉘 1. /etc/.login
2. $HOME/.login 3. $HOME/.cshrc 4. $HOME/.logout
환경 설정 파일
콘쉘 로그인 과정
사용자 로그인 시작 /etc/profile
~/.profile ENV 변수
~/.kshrc login 성공
No Yes
환경 설정 파일
수정된 환경 설정 파일 내용의 적용
logout했다가 다시 login
logout하지 않고 적용하려면 다음 명령 수행
$. ~/.kshrc
$. ~/.profile
환경 설정 파일
실습 순서
1) cd
2) vi .profile 3) set –a
4) PATH=$PATH:~/bin:.
5) PS1= ^[[32;1m[$PWD] ^[[0;0m # 6) ENV=~/.kshrc
7) set +a
8) . ~/.profile 9) vi .kshrc
10)stty erase ^h 11)TERM=vt100 12)alias 설정 13). ~/.kshrc 14)alias 동작 확인
1) 홈 디렉토리로 이동 2)
3) 자동으로 export실행토록 설 4) 경로설정 추가 정
5) 프롬프트 변경 추가 6) ENV추가
7) 자동설정 해제
8) .profile 수정내용 적용 9) .kshrc 내용 수정
• alias 등 필요내용 삽입 10) .kshrc 수정내용 적용
11) alias가 동작되는지 확인