Korn Shell
콘셀의 메타 캐릭터
~ (Tilde) — > 현재 유저의 홈 디렉토리를 지칭
cd ~/dir1
pwd
–> export/home/user1/dir1
passwd -e –> 기본쉘 변경
—————————————————
cd ~user2
pwd
–> /export/home/user2
—————————————————
– (Dash) — > 이전 작업 디렉토리
cd
pwd
–> /export/home/user1
cd /tmp
pwd
–> /tmp
cd –
–> /export/home/user1
cd –
–> /tmp
——————————————————–
* (Asterisk) –> 해당하는 한개 이상의 캐릭터
cd
ls f*
ls d*
ls *3
———————————————————-
? (Question mark) –> 한개의 캐릭터에 대응
ls dir?
———————————————————-
[]
(Square Bracket) –> 범위를 지칭
ls [a-f]* 시작 캐릭터가 a-f 까지 해당
ls [fp]* f 혹은 p로 시작하는 모든 것
———————————————————-
‘ ‘ (single quotes) –> 이 안에 들어있는 문자는 원래의 의미를 상실한다.
echo ‘$SHELL’
————————————————————-
” ” (double quotes) –> 싱글 쿼트와 비슷하지만 일부 메타문자는 원래의 의미를 가진다.
echo “$SHELL”
—————————————————————
\ (Back slash) — > 바로 뒤에 오는 문자의 의미를 삭제하고 일반 문자로 인식시킨다.
echo “\$SHELL”
—————————————————————
`
` (Back quotes) –> 파이프와 유사한 기능으로서 앞에 오는 명령어의 아규먼트로 작용시킨다.
echo “Today’s date is `date`”
echo “The user is currently in the $(pwd) directory.”
——————————————————————-
리다이렉션 기호 ( < , > , >> )
0 — stdin ( standard input) <
1 — stdout ( 스탠다드 아웃풋) >
2 — stderr ( 스탠다드 에러 ) >
형식
1. 인풋 — 명령 < 파일명 = 명령 0< 파일명
2. 아웃풋 — 명령 > 파일명 = 명령 1> 파일명
3. 덮어쓰기 방지 명령 >> 파일명
4. 에러 재지정 명령 2> 파일명
ls -l > file1; cat file1
echo “that’s my directory_list file” >> file1; cat file1
———————————————————————-
변수 — 쉘에서 필요한 데이터를 저장하는 메모리 영역
set : 현재 쉘의 변수
PS1 : 쉘 프롬프트가 저장된 변수. 이 변수의 데이터가 쉘의 프롬프트로 사용
수정하게 되면 쉘의 프롬프트가 변경된다.
print $PS1
PS1=”$LOGNAME@’UNAME -n’$”
ILU=”I like UNIX”
ps1=”$ILU >”
—————————————————————————-
PATH — 실행 파일이 있는 경로명을 저장한다.
같은 이름을 가진 명령어가 여러개의
디렉토리에 존재할 수 있고
이 경우 PATH 변수에 있는 경로명의 순서대로 명령어를 찾다가 명령어가
발견된
경로의 명령어를 실행.
저장되는 데이터는 명령어가 있는 디렉토리의 경로명 , 명령어를 찾을
디렉토리의 순서
echo $PATH
PATH=$PATH:~
echo $PATH
————————————————————————————-
HOME — 사용자의 홈 디렉토리의 절대경로명을 가지고 있다.
print $HOME
————————————————————————–
PWD — 현재 명령어를 실행하는 디렉토리의 절대 경로명을 가지고 있다.
print $PWD
————————————————————————–
LOGNAME — 사용자의 로그인 이름을 저장하고 있다.
print $LOGNAME
———————————————————————–
HOSTNAME — 사용자가 로그인한 시스템의 이름을 저장
print $HOSTNAME
PS1=”$LOGNAME@$HOSTNAME\ $”
———————————————————————–
이전 명령어 목록
최근에 사용했던 명령어를 실행하기 위한 명령으로 ~/.sh_history = $HOME/.sh_history
명령은 history
옵션
-[nunber] : 최근 출력되는 명령어의 갯수를 변경시키는 옵션
-r : 최근 실행한 명령을 역순으로 출력
-n : 출력형태에서 숫자는 없이 명령어만 한줄에 한개씩 출력
—————————————————————————–
r — 히스토리 명령을 통해서 최근 실행한 명령어의 목록을 다시 실행하기 위해서 사용
——————————————————————————
콘셀의 기능제어
set -o [옵션 네임] 활성화
set +o [옵션 네임] 비활성화
———————————————
출력 재지정 덮어쓰기 방지
출력재지정을 명시한 파일이 있을 경우 파일이 존재한다는 메시지를 제공하고 명령어를 실행하지 않는다.
set -o noclobber
set +o noclobber
————————————————
파일 이름 완성과 명령행 편집
잘못된 글자만을 수정하는 기능을 명령행 편집기능이라 한다.
일부 경로명 이후의 나머지 경로명을 완성하는 기능을 파일 이름 완성 기능
set -o vi|emacs
set +o vi|emacs
사용법
명령행 편집
esc 적용 , k , j h, l
자동완성 기능
명령어 입력후 esc –>\ 를 눌러준다. 만약에 경로명이 두개 이상이여서 인식하지 못한다면
구분이 가능한 문자까지 입력후 \
검색을 하려면 esc –> =
———————————————————————————————-
쉘의 설정 파일
1. /etc/profile 모든 사용자들이 로그인 할때 읽는다.
2. ~/.profile 콘셀이 로그인 셀로 지정된 사용자가 로그인할 때 홈 디렉토리에 파일이 있으면 읽는다.
3. ~/.kshrc 콘셀이 로그인 셀로 지정된 사용자가 로그인할 때 ~/.profile 파일에서 설정이 되어
있으면 읽는다.
~.profile 로그인 쉘이 본셀이나 콘쉘로 되어 있는 사용자가 읽는 파일, 콘셀에서 추가된 기능은 본쉘이 알 수
없 기
때문에 본 쉘의 기능을 기준으로 설정한다.
~.kshrc .profile 에 ENV=~/.profile 가 설정되어 있어야 읽고 콘셀만 읽는 파일이기 때문에 콘셀의 기능과
옵션등
에 대한 설정이 되어 있다.
예제 :
1.사용자 초기화 파일(ksh 사용자)
# vi
/.profile
——————————————————————–
PATH=/usr/bin:/usr/sbin:/usr/ucb
PS1=’$PWD]#
‘
EDITOR=vi
ENV=~/.kshrc
export PATH PS1 EDITOR ENV
stty erase
^H
———————————————————————
EDITOR
변수는 시스템 기본 편집기를 변경하는 변수로서
텍스트 환경(console mode)에서의 기본 편집기는 ed(line
editor)이고
GUI 환경에서는 text note 프로그램이 기본 편집기 이므로 이를 변경
하고자 할때 사용하는 변수
ENV 변수는 ksh의 경우 2개의 초기화 파일을 가지고 있고, 2번째 초기화
파일을 active로 만들기 위해 사용하는
변수이다.
stty는 터미널 설정에 설정되어 있는 값정보를 변경할 경우 사용하는
명령이고, 지우는 키는 유닉스상에서 Delete키 이므로 이를
변경하기
위해 erase 키를 사용하여 ^+H (Back space)로 변경하였다.
# vi
/.kshrc
———————————————————————
set
-o vi
alias ls=’ls
-F’
——————————————————————
콘쉘 설정파일
vi .profile
PATH=/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/ucb:~
MANPATH=/usr/share/man:/usr/local/man
EDITOR=vi
LANG=ko
ENV=~/.kshrc
export PATH MANPATH EDITOR LANG
ENV
vi .kshrc
stty erase ^H —> ctrl + h
alias ls=’ls -aF’
alias
c=clear
alias h=history
alias cp=’cp -i’
set -o vi
set -o
noclobber
PS1='[$PWD]# ‘
export PS1