Chapter 7. Korn Shell Characteristic
Chapter 7. Korn Shell
Characteristic
_________________________________
■ Redirection
■ Pipe
■ Korn Shell Function
■ Variable
■ Korn Shell Metacharacter
■ History
■ Alias
■ Environment File
■ 커널의 기능
- 하드웨어 자원 관리
- Device 관리
- 메모리 , 가상메모리 관리
■ 쉘의 기능(Shell Function)
- 명령어 해석기(Command Interpreter)
- 프로그램 할수 있는 언어(Programable Language)
(1). 방향 재지정(Redirection)
■ fd(파일 기술자, File Descriptor)
[EX] 프로그램에서의 File Descriptor
main()
{
int fd;
fd=open(......);
}
■ 예약되어진 파일 기술자(File Descriptor)
---------------------------------------
번호
설 명
---------------------------------------
0 표준입력 stdin (Standard Input)
1 표준출력 stdout(Standard Ouput)
2 표준에러 stderr(Standard Error)
---------------------------------------
stdin(Keyboard)======> SHELL
========> stdout(Monitor)
|
|
stderr(Monitor)
[그림] 표준입력, 표준출력, 표준에러
[EX] 표준출력, 표준에러의 예
# ls /var /nodir
[EX] 표준입력, 표준출력의 예
# cat
Hello stdin
Hello stdout
Solaris
Solaris
<Ctrl + D>
# cat < /etc/passwd
# cat > filename
Hello
Solaris
<Ctrl + D>
# cat filename
(1.1) 입력 재지정(Redirection stdin)
[FORMAT]
CMD < filename
CMD 0< filename
CMD << filename(X) => Here Documentation
# mailx -s
"Solaris TEST" root@example.com < mail.txt
[참고] mailx 명령어를 통한 메일 보내기
# mailx root
Subject: Solaris TEST
<---- 메일 제목 입력("Solaris TEST")
test mail for user01
<---- 내용 입력
<ctrl+D>
or . <---- <Ctrl + D> 입력
#
(1.2) 출력 재지정(Redirection stdout)
[FORMAT]
CMD > filename
CMD 1> filename
CMD
>> filename
CMD 1>> filename
# ls -l > file.txt
# cat file.txt
[참고] '>>'(출력 리다이렉션)을 사용한 파일 내용 추가
----file1----
1111
2222
-------------
# echo 1111 > file1
# echo 2222 > file1
# cat file1
# echo 3333 >> file1
(1.3) 에러 재지정(Redirection stderr)
[FORMAT]
CMD 2> filename
CMD 2>> filename
# ls /var /nodir > file.txt
Standard Output
Standard Error
# ls /var /nodir 2> file.txt
Standard Output
Standard Error
# ls /var /nodir > file1.txt 2> file2.txt
Standard Output
Standard Error
# ls /var /nodir > file1.txt 2>&1
// > 로 표준 출력을 file1.txt에 주고 2> 로 표준에러를 &1(표준출력) 로 리디렉션
[참고]
Redirection : CMD > filename
PIPE : CMD | CMD
# ls -l 1> 1
[참고] 터미널 출력이 있는 명령어 수행시
# cmd > file.log (X)
# cmd > file.log 2>&1 (0)
[참고] CMD
2>/dev/null
일반사용자 전체 시스템의 파일과 디렉토리 목록중에 core 파일을
찾을려고 할때 검색할려고
하는 내용보다 권한이 되지 않아서 'Permission
Denied' 에러 메세지가 더 많이 출력되는 경
우가 존재할 수 있다. 이런 경우 명령어의 마지막에 '2>/dev/null'을 붙여서 에러메세지는
보지 않고 정상적인 출력 결과만 보는 경우가 있다.
$ find / -name core -type f 2>/dev/null
[참고] confiugre
--prefix=/usr/local/apache 2> apache.log
# ./configure --prefix=/usr/local/apache 2>
apache.log
# ./configure --prefix=/usr/local/apache >
apache.log 2>&1
(2). pipe
앞의 CMD의 출력 결과가 뒤의 CMD 입력값으로
들어간다.
[FORMAT] CMD
| CMD
-------
-------
Kernel Buffer
# ls -l | grep Error (X)
# ls -l > file.txt
# grep Error file.txt
ls -l grep Error file.txt
file.txt
# ls -l | grep Error
----------
----------
Kernel
Buffer
[EX] pipe 활용 예
# ps -ef | more (# CMD | more) 한페이지가 넘는 페이지 출력 방법 지정
# ps -ef | grep inetd (# CMD | grep inetd) 앞단의 명령어의 출력 결과 중 패턴 검색
[참고] tee 명령어
# ps -ef | grep inetd > file.log
------- A
------------+
-------
# ps -ef | grep inetd | tee file.log
----------
---+ +----
| |
file.log
EX) tee 명령어 실습
■ CMD > file.log
■ CMD | tee file.log
# cal 2002 > file1.log
# cal 2002 | tee file2.log
tee 입력값을 화면과 파일에 동시에 출력 시켜줌
(3) 콘셀의 기능(Korn Shell Function)
# set -o
....
ignoreeof
off
....
markdirs off
....
noclobber
off
....
vi
on
....
# set -o vi
# set +o vi
(3.1) 파일 덮어쓰기 방지 기능
set -o noclobber
# set -o noclobber
# set -o | grep noclobber
# echo 1111 > file1
# echo 2222 > file1
ksh: file1: file already exists <----- 메세지 확인
[참고] CMD >| file1
# echo 3333 >| file1
(3.2) 파일 이름 자동 완성 기능 & 명령행 편집
Filename Completion & Command Line Edit
set -o vi
set -o emacs
# set -o vi
# export EDITOR=vi
# export VISUAL=vi
(a). 명령행 편집(Command Line Edit)
k (pre-CMD)
j (back-CMD)
h(<-), l(->)
w, b, dd, d$, d0
[EX] Command Line Edit
# find / -name core -type f
<Ctrl + C>
# <ESC><K>
# find / -name file1 -type f
(b). 파일 이름 자동 완성 기능(Filename Completion)
(실습 준비)
# cd /test
# rm -r *
# mkdir dirname1
# touch file.log
(자동 완성 기능 실습)
# cd dir<ESC><\>
# cd /test
# mkdir dir2
# cd dir<ESC><\>
<ESC><=>
1) dir2/
2) dirname1/
# cd dirn<a><ESC><\>
[참고] 와일드
카드(Wild Card)
# cd dirn*
dirname1
dir1
[참고]
Copy & Paste
(1). Select, Drag & Drop
(2). Mouse Right Button Click & Edit Menu Selection
(3). Ctrl + Insert, Shift + Insert
[정리] 긴 이름을 가진 파일/디렉토리 다루기
(a). 파일이름자동 완성 기능 사용
(b). 와일드 카드 사용
(c). 복사 & 붙이기
(3.3) 로그 아웃 방지 기능
set -o ignoreeof
EOF(End Of File)의 의미를 갖는
<Ctrl + D>가 존재한다.
<Ctrl + D>의 의미는?
(a). 파일의 끝을 알려 주는 기능
(b). 현재 프로그램 종료(쉘)의
기능
갖는다.
(a). 파일의 끝 의미를 갖는 <Ctrl + D>
# mailx root
> Subject : TEST
hello
<Ctrl + D>
(b). 현재 프로그램(쉘) 종료의
의미를 갖는 <Ctrl + D>
# telnet 172.16.8.254
root 사용자로 로그인
# <Ctrl + D> => 로그아웃된다.
# telnet 172.16.8.254
root 사용자로 로그인
# set -o ignoreeof
# <Ctrl + D> => 로그아웃 되지 않는다.
# exit
(4) 변수(Variable)
- 지역 변수(Local Variable)
- 환경 변수(Global Variable, Environment
Variable)
- 특수 변수(Special Variable)
// 지역변수와 환경변수의 차이는 export 되었는지에 따라 다르다.
(4.1) 변수 선언(Variable Define)
sh ------> ksh ------> zsh ------> bash
(본쉘 스타일)
(a). 변수를 선언하는 방법
# VAR=5 (변수의 값으로는 숫자나 문자 구별하지 않는다.)
# VAR=hello
# export VAR
(b). 변수의 내용을 확인하는 방법
# echo $VAR
(c). 변수의 내용을 초기화 하는 방법
# unset VAR
■ (콘쉘 스타일)
(a). 변수를 선언하는 방법
# export VAR=hello
(b). 변수의 내용을 확인하는 방법
# print $VAR
(c). 변수의 내용을 초기화 하는 방법
# unset VAR
[EX] 변수 선언 테스트
# VAR=hello
# echo $VAR
# unset VAR
# echo $VAR
(4.2) export의 의미
# ps
PID TTY TIME CMD
408
pts/3 0:00 ksh
# VAR1=5
# VAR2=10
# export VAR2
# ksh
# ps
PID TTY TIME CMD
408
pts/3 0:00 ksh
994
pts/3 0:00 ksh
# echo $VAR1
# echo $VAR2
# exit
# echo $VAR1
# echo $VAR2
VAR1=5, VAR2=10
-----------------+ +-----------------
| |
| VAR1=?, VAR2=? |
+-------------------+
(4.3) EDITOR, VISUAL
기본적인 편집기를 선언할 때 사용.
# EDITOR=vi
# EDITOR=/usr/bin/vi
# export EDITOR
or
# VISUAL=vi
# VISUAL=/usr/bin/vi
# export VISUAL
or
# set -o vi
[참고] 기본적인 편집기 선언
OS(썬 개발 프로그램) : Default Editor (set -o vi)
Oracle DB
: EDITOR
[참고] set / env
set : 모든 변수(지역변수 + 환경변수)
env : 환경변수
# VAR1=ITBANK => 지역변수
# VAR2=SOLARIS => 환경변수
# export VAR2
# set | grep VAR1 (0)
VAR1=ITBANK
# set | grep VAR2 (0)
VAR2=SOLARIS
# env | grep VAR1 (X)
# env | grep VAR2 (0)
VAR2=SOLARIS
0: View
X: Not View
(4.4) PS1
쉘 프롬프트를 정의할 때 사용하는 변수
- root 사용자의 쉘프롬프트 : #
- 일반 사용자의 쉘프롬프트 : $
# PS1=[solarisXXX]#
# export PS1
# PS1='$PWD> '
# PS1='[$PWD]# '
# export PS1
[참고] Bash Shell에서의 PS1 정의 방법
쉘프롬프트: [solaris254@root:/]#
(ksh ) # PS1=[`hostname`@$LOGNAME:'$PWD]# '// 명령어+자신의이름+현재폴더
(bash) # PS1='[\h@\u:\w]$$'
(4.5) PATH
명령어 검색 위치 지정 변수
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/dt/bin:/usr/ccs/bin:/usr/openwin/bin:/usr/ucb
# export PATH
EX) ls 명령어 수행
# ls -l
# /usr/bin/ls -l
# cd /usr/bin
# ./ls -l
[참고] 스크립트 디렉토리
/root/bin, /root/shell : 스크립트 디렉토리
# PATH=$PATH:/root/shell
# export PATH
# script.sh
[참고] 명령어 실행시 에러 메시지
# cmd
......
ksh: command: not found
......
# find / -name cmd -type f
- 1> 명령어가 없는 경우(->
명령어 설치)
- 2> PATH 변수에 명령어의 경로가 정의가 않은 경우(-> PATH 변수에 경로 추가)
EX) ethereal & printmgr
# ethereal (ksh : ethereal: not found) => 프로그램이 설치 안된 경우
# printmgr (ksh : printmgr: not found) => PATH 변수에 경로가 추가 되지 않은 경우
(4.6) MANPATH
매뉴얼 페이지 검색 경로를 지정할 때 사용
# MANPATH=/usr/man:/usr/dt/man:/usr/local/man
# export MANPATH
# man ls
(매뉴얼 페이지가 보인다.)
# echo $MANPATH
......:/usr/man:...... (/usr/man --->
/usr/share/man)
[참고] 매뉴얼 페이지 디렉토리 확인
# cd /usr/share/man
# ls
(4.7) LD_LIBRARY_PATH
라이브러리의 경로를 검색할때 사용하는 변수
#
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/lib
# export LD_LIBRARY_PATH
라이브러리
- 동적 라이브러리(Dynamic Lib.) : XXXXXX.so
- 정적 라이브러리(Static Lib.) : XXXXXX.a
EX) ls 명령어의 동적 라이브러리 확인
# ldd /usr/bin/ls
libc.so.1 =>
?
libdl.so.1
=> /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
......
ld.so.1: gs: fatal error: libpng.so.2 : open fail :
no such file or directory
......
# find / -name "libpng.so.2" -type f
2>/dev/null
- libpng.so.2 라이브러리를 찾은 경우
- libpng.so.2 라이브러리를 찾을 수 없는 경우
(a). 라이브러리 파일을 찾은 경우
# export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
(b). 라이브러리 파일을 못 찾은 경우
http://docs.sun.com -> 검색창 -> "libpng.so.2"-> SUNWxxx
http://www.sunfreeware.com
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
[참고] 솔라리스 패키지 설치시 고려해야 하는 변수
패키지(Package)
-----------------------
Binary Command(Daemon) =>
/usr/local/bin
Configuration File
Library =>
/usr/local/lib
Manual =>
/usr/local/man
Documentation
-----------------------
- PATH
- MANPATH
- LD_LIBRARY_PATH
(4.8) 기타 환경 변수
HOME / PWD / LOGNAME
# echo $HOME
/
# echo $PWD
/test
# echo $LOGNAME
root
EX) $HOME의 활용
# cd
# cd $HOME
(4.9) 특수 변수(Special Variable)
- $ : 현재 쉘의 PID 번호를 저장하고 있다.
- ? : 바로 이전 명령어의 정상 실행 여부에 대한 결과 값이 들어 있다.
- ! : 바로 이전 백그라운드 프로세스에 대한 PID 번호를 저장하고 있다.
- 인자변수($0, $1, $2, ....)
# echo $$
450
# ps
# cal
# echo $?
# ls /nodir
# echo $?
# sleep 200 &
[1] 450
# echo $!
[참고] Login
Variables
---------------------------------------------------------------
변수이름 선언주체 설명
---------------------------------------------------------------
LOGNAME login 사용자 로그인 이름 정의
HOME login 사용자의 홈디렉토리 정의
SHELL login 사용자의 기본 쉘 정의
PATH login 사용자의 명령어 검색 경로 정의
MAIL login 사용자의 mailbox 경로 정의
TERM login 사용자의 사용 터미널 정의
LPDEST 기본 선언 아님 기본 프린터 정의
PWD shell 현재 작업 디렉토리 정의
PS1 shell 쉘 프롬프트 정의(sh, ksh)
prompt shell 쉘 프롬프트 정의(csh)
---------------------------------------------------------------
[정리] 변수(Variable)
- 변수 선언 방법(Variable Definition)
- export 의미?
- 쉘 환경 변수(Shell Environment Variable)
EDITOR,
PATH, MANPATH, LD_LIBRARY_PATH
- 지역변수(Locale Variable)
- 환경변수(PATH, MANPATH, LD_LIBRARY_PATH,
etc)
- 특수변수(Special Variable)
$$, $?,
$!
(5) Korn Shell Metacharater
- ' ' : 작은 따옴표(single quote)
- " " : 큰 따옴표(double quote, $, ` `, \)
- ` ` : 역 따옴표(back quote)
- \ : 역 슬래쉬(back
slash)
- ; : 세미콘론(semicolon)
[EX] 작은 따옴표 실습(single quote)
// 작은 따옴표는 안에 들어 있는 모든 것들의 쉘 해석을 막는다. 특별한 의미가 없이 그냥 하나의
문자로 인식이 된다. 문자는 공백을 포함한다.
# echo $HOME
# echo '$HOME'
[EX] 큰 따옴표 실습(double quote)
// 큰 따옴표는 작은 따옴표와 같은 동작을 하지만 $ , ``, \ 문자의 해석은 제외한다.
# echo "$HOME"
# echo "$HOME is my directory."
[EX] 역 따옴표 실습(back quote)
// 쉘은 역따옴표 안에 있는 것을 명령어로 생각 하고 실행하게 된다.
# hostname
# echo `hostname`
# echo `date`
# echo "`hostname` is my hostname.!!!"
# echo "$(hostname) is my hostname.!!!"
[EX] 역 슬래쉬 실습(back slash)
// 쉘은 역 슬래쉬 뒤에 오는 것의 의미를 제한하도록 한다.
# echo $HOME
# echo \$HOME
# echo "\$HOME is my directory"
# find / -name core -type f -exec rm {} \;
# find / -name core -type f -exec rm {} ';'
(참고) \
-> `명령어` : 명령어 실행 결과 출력 표시
-> 명령어 \ : 명령어가 아직 끝나지 않음을 표시
# ls -l
# ls \
> -l
[EX] 세미콜론 테스트(semicolon)
excution mutliple command a line
# date ; cal ; ls -l
# date
# cal
# ls -l
(6) history
| |
STACK
| |
| |
+--------+
# history
# history -r (reverse)
# history -n (not number)
# history -5
[참고] 히스토리 참고 파일 및 변수
■ ~/.sh_history 히스토리 내용을 지속적으로 저장하는 파일
■ HISTSIZE 히스토리를
기록하는 Stack의 크기를 지정하는 파일
■ HISTFILE 히스토리
내용을 지속적으로 저장하는 파일 이름 지정
[EX] HISTSIZE, HISTFILE 변수 지정
# HISTSIZE=128 ; export HISTSIZE
# HISTFILE=~/.sh_history ; export HISTFILE
HISTSIZE
If
this variable is set when the shell
is invoked,
then the number
of previously entered commands that
are accessible by this shell will be
greater than or
equal to this number. The default
is 128.
HISTFILE
If
this variable is set when the shell
is invoked,
then the value is the pathname of the file that will
be
used to store the command history.
(See Command
re-entry below.)
[참고] r (re-excution)
# history
# r
# r 450
# r vi
# r etc=var 450 ( 450 #
vi /etc/dir1/dir2/dir3/filename)
(7) alias
선언 방법 # alias cp='cp
-i'
선언 확인 방법 # alias
# alias cp
선언 해제 방법 # unalias cp
[참고] unalias & Backslash
# \rm -r dir1
EX) \rm -r dir1 실습
# cd /test
# mkdir dir1
# cd dir1
# touch file1 file2 file3 file4
# cd ..
# alias rm='rm -i'
# rm -r dir1
rm: examine files in directory dir1 (y/n)? <Ctrl +
C> <----- '<Ctrl + C> 입력
# \rm -r dir1
(참고) rm -f (force)
# rm -rf dir1 (일부 유닉스)
[정리] 콘쉘의
특징
- Redirection
- Pipe
- Korn Shell Function
- Variable
- Metacharacter
- history
- alias
(8) 환경 파일
사용자 로그인시 적용되는 환경파일
■ /etc/profile : 전체 사용자 환경 설정 파일
■ ~/.dtprofile : CDE 환경 사용자 환경 설정 파일 (DTSROUCEPROFILE=true)
■ ~/.profile : 개인
사용자 환경 설정 파일
(ENV=/.kshrc)
■ ~/.kshrc : 개인
사용자 환경 설정 파일
사용자가 CDE 환경으로 로그인하게 되는 경우
/etc/profile
~/.dtprofile
~/.profile
~/.kshrc
파일들이 읽혀 진다.
사용자가 Command Line Login을 하는 경우
/etc/profile
~/.profile
~/.kshrc
파일들이 읽혀 진다.
/etc/profile과 ~/.dtprofile,
~/.profile은 로그인시에 한번 읽혀 지고, ~/.kshrc 파일은 콘
쉘이 실행될때 마다 실행이 된다.
(8.1) /etc/profile
* ~/.profile과 ~/.kshrc 파일에
정의 될수 있는 모든것들에 대해 정의 가능
* 시스템의 모든 사용자에게
적용할 것에 대한 정의
(8.2) ~/.profile
* 변수 선언
- PATH
- ENV
- EDITOR
- 기타
(8.3) ~/.kshrc
* 특정 변수 선언(PS1)
* set -o 설정
* alias 설정
[참고] 솔라리스 기본 환경 파일 해석
■ /etc/profile
■ ~/.profile (-> ENV_main.sh)
■ ~/.kshrc (-> ENV_main.sh)
(a). /etc/profile 파일의 해석
---------------- /etc/profile 해석-------------------------------
trap ""
2 3 -----> /etc/profile 파일을 실행하는 동안(로그인시) 2번 시그널,
3번 시그널을 받아도 종료하지 않는다.
export LOGNAME PATH
-----> 변수
export(/usr/bin/login)
if [ "$TERM" = "" ] -----> $TERM 변수가 선언 안되어 있으면
then
if
/bin/i386 -----> i386(32bits) 일반운영체제
then
TERM=sun-color
else
TERM=sun
fi
export
TERM
fi
# Login
and -su shells get /etc/profile services.
# -rsh is
given its environment in its .profile.
case "$0" in -----> -ksh /etc/profile
-sh | -ksh | -jsh | -bash) A
+----- $0
if [ !
-f .hushlogin ] -----> ~/.hushlogin 파일이 존재하지 않으면
then
/usr/sbin/quota -----> Quota 실행
# Allow the user to break
the Message-Of-The-Day only.
trap "trap '' 2" 2
/bin/cat -s /etc/motd -----> 로그인시 /etc/motd 내용 출력
trap "" 2
/bin/mail -E -----> 새로운 메일이 존재 하면
case $? in
0)
echo "You have new
mail."
;;
2)
echo "You have
mail."
;;
esac
fi
esac
umask 022
-----> UMASK 설정
trap 2 3
--------------------------------------------------------------------
(b). ~/.profile 해석
------------------------ ~/.profile 해석 ----------------------------
# (1). stty erase ^H
stty erase ^H
# <Backspace>
# stty erase ^?
# <Delete>
-----> Set Terminal Type
# tty
# stty
# stty
-a
.....
erase = ^h .....
# stty
erase <DELETE>
# (2). ENV Variable
ENV=~/.kshrc
-----> 추가적인 환경 파일 정의
# (3). EDITOR Variable
EDITOR=/usr/bin/vi
-----> 기본적인 편집기 선언 변수
# (4). PATH Variable
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb
PATH=$PATH:/usr/dt/bin:/usr/ccs/bin:/usr/openwin/bin
PATH=$PATH:/usr/lib/netsvc/yp:/usr/apache/bin
PATH=/usr/sfw/bin:/usr/sfw/sbin:/usr/local/sbin:/usr/local/bin:$PATH
PATH=/usr/local/ssl/bin:$PATH
-----> 명령어의 실행 위치 정의 변수
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb\
:/usr/dt/bin:/usr/ccs/bin:/usr/openwin/bin\
:/usr/lib/netsvc/yp:/usr/apache/bin\
:/usr/sfw/bin:/usr/sfw/sbin:/usr/local/sbin:/usr/local/bin\
:/usr/local/ssl/bin
# (5). MANPATH Variable
MANPATH=/usr/share/man:/usr/man:/usr/openwin/share/man
MANPATH=/usr/sfw/share/man:/usr/local/man:/usr/local/ssl/man:$MANPATH
# (6) LD_LIBRARY_PATH Variable
LD_LIBRARY_PATH=/usr/lib:/usr/secure/lib:/usr/local/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib:/usr/sfw/lib
export ENV EDITOR PATH MANPATH LD_LIBRARY_PATH
---------------------------------------------------------------------------
(c). ~/.kshrc 파일의 해석
------------------------ ~/.kshrc 파일 해석 -------------------------------
# (1). set -o
set -o vi
set -o trackall -----> Tracked
Alias // 사용된 명령어를 PATH를 뒤지지 않고 기억하고 있다 (빠른검색)
# set -o ignoreeof
# set -o noclobber
# (2). PS1 Variable
-----> 쉘 프롬프트 정의 변수
# PS1=[$LOGNAME@`hostname`:'$PWD]# ' # EX) [root@solaris254:/]#
# PS1=[`hostname`@'$PWD]# ' # EX) [solaris254@/]#
# PS1='$PWD'"[`hostname`]# " # EX) /etc[sun02]#
# PS1='$PWD> ' # EX)
/etc>
PS1=['$PWD]# ' # EX) [/]#
export PS1
# (3). alias
# (a). 기본적인 alias
alias c='clear'
alias h='history'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias ls='ls -hF'
alias llt='ls -aihlF'
alias ll='ls -ailhF | more'
# (b). 필요한 경우 선언하는
alias
alias lsf='ls -al | grep ^-'
alias lsd='ls -al | grep ^d'
alias dir='ls -ailhF | more' -----> 윈도우즈 명령어 실행
alias
alias ipconfig='ifconfig -a' -----> 윈도우즈 명령어 실행
alias
#alias cat='cat -n'
alias df='df -h'
alias nslookup='/usr/sbin/nslookup'
# (c). 편리한 기능의 alias
/*
Webserver(Apache)
/etc/apache/httpd.conf
-----> Configuration File
/var/apache/htdocs -----> Source Directory
/var/apache/logs -----> Log Directory
설정 파일을 빨리 편집하도록 하는 기능
*/
alias fconfig='vi /etc/ftpd/ftpaccess'
alias hconfig='vi /etc/apache/httpd.conf'
# 소스디렉토리 이동
alias hdir='cd /var/apache/htdocs'
# 로그파일 모니터링
alias mlog='tail -f /var/adm/messages'
alias slog='tail -f /var/adm/sulog'
alias sslog='tail -f /var/log/syslog'
# (4). Function
-----> alias pps='ps -ef | head -1 ; ps -ef | grep
$1' 같은 기능 제공
pps () {
if [ $# -ne
1 ] ; then
echo
Usage : $0 Process
fi
/usr/bin/ps
-elf | head -1
/usr/bin/ps
-elf | grep $1 | grep -v grep
}
ppss () {
if [ $# -ne
1 ] ; then
echo
Usage : $0 Process
fi
/usr/ucb/ps
-aux | head -1
/usr/ucb/ps
-aux | grep $1 | grep -v grep
}
-------------------------------------------------------------------------
(8.4) 쉘별 환경 파일(sh/ksh/csh User Initialization File)
_______________________________________________________________________________
Shell User Description
Initialization
File
_______________________________________________________________________________
sh /etc/profile Defines system wild environment at login
$HOME/.profile Defines user's environment at login
csh /etc/.login Defines system wild environment at login
$HOME/.cshrc Defines user's environment for all C shells
invoked
after login shell
$HOME/.login Defines user's environment at login
ksh /etc/profile Defines system wild environment at login
$HOME/.profile Defines user's environment at login
$HOME/$ENV Defines user's environment at login in the
file
specified by
the Korn shell's ENV environment variable
_______________________________________________________________________________
[참고] 배쉬쉘 환경
파일(Bash Shell User Initialization Files)
■ /etc/profile
전체 사용자 환경 파일
■ ~/.bash_profile
사용자 개인 환경 파일
■ ~/.bashrc
사용자 개인 환경 파일
(8.5) 사용자 기본 환경 파일(Default User
Initialization Files)
■ /etc/skel (skelton)
_________________________________________
Shell Default File
_________________________________________
csh
/etc/skel/local.login
/etc/skel/local.cshrc
ksh
/etc/skel/local.profile
_________________________________________
[EX] /etc/skel 디렉토리
# useradd -m -d /export/home/user03 -s /bin/ksh
user03
# passwd user03
# ls -al /export/home/user03
# ls -al /etc/skel
# cat > /etc/skel/.exrc
set showmode
set number
<Ctrl + D>
# useradd -m -d /export/home/user04 -s /bin/ksh
user04
# passwd user04
# ls -al /export/home/user04
# ls -al /etc/skel
[참고] 관리자가 사용자의 환경 초기화하는 방법
- /etc/profile 사용하는 방법
- /etc/skel 사용하는 방법
(8.6) 사용자 변수 선언(User Variable Definition)
사용자 변수 선언시 sh 계열과 csh 계열은 차이점이 존재한다.
(a). csh 계열(csh/tcsh
style)
변수 선언 방법 # setenv VAR 5
변수 확인 방법 # echo $VAR
변수 해제 방법 # unset VAR
(b). sh 계열(sh/ksh/zsh/bash
style)
변수 선언 방법 # VAR=5
# export VAR
변수 확인 방법 # echo $VAR
변수 해제 방법 # unset VAR