예전에 쓰던 리눅스 쉘프롬프트를 다시 사용하고 싶어서 검색하던 도중 원하는 쉘 프롬프트에 대한 포스트를 예전에 같은 회사에서 일을 하셨던 훌륭한 강과장님의 블로그에서.. ^^; 발견할 수 있었다.
하기야.. 이분이 쓰던것을 따라 사용했었으니깐.. 당연한 것인가?
대략 이런 모습을 한 쉘 프롬프트이다. 예쁘당~
사용하려면 다음과 같이 설정을 해주면 된다.
.prompt 라는 녀석을 하나 만들어 준다. 뭐 다른 이름이라도 상관은 없지.. -_-
$ vi .prompt
## color variables
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[0;34m\]"
CYAN="\[\033[0;36m\]"
MAGENTA="\[\033[0;35m\]"
YELLOW="\[\033[0;33m\]"
BLACK="\[\033[0;30m\]"
GRAY="\[\033[0;37m\]"
WHITE="\[\033[0;38m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_MAGENTA="\[\033[1;35m\]"
LIGHT_YELLOW="\[\033[1;33m\]"
LIGHT_WHITE="\[\033[1;37m\]"
NO_COLOR="\[\033[0m\]"
HOSTNAME_SHORT=${HOSTNAME%%.*}
TTY=$(tty); TTY=${TTY#/dev/}
## set shell prompt
shopt -s checkwinsize
PROMPT_UPDATE() {
case "$PWD" in
$HOME*) PWD_SHORT="${PWD/$HOME/~}" ;;
*) PWD_SHORT="$PWD" ;;
esac
PS1="($LOGNAME@$TTY@$HOSTNAME_SHORT)-($PWD_SHORT)"
if [ ! -n "$COLUMNS" ]; then
local fillsize=0
else
local fillsize=$((${COLUMNS}-${#PS1}))
fi
local fill=""
if [ $fillsize -gt 0 ]; then
while [ $((${#PROMPT_FILL})) -lt ${COLUMNS} ]; do
PROMPT_FILL="$PROMPT_FILL-"
done
fill="${PROMPT_FILL:0:${fillsize}}"
elif [ $fillsize -lt 0 ]; then
fill=""
local prefix=${PWD_SHORT:0:5}
local PWD_SHORT="$prefix..${PWD_SHORT:$((2+${#prefix}-${fillsize}))}"
fi
PS1="\
$NO_COLOR($RED$LOGNAME$NO_COLOR@$GREEN$TTY$NO_COLOR@$BLUE$HOSTNAME_SHORT$NO_COLOR)$CYAN-$fill$NO_COLOR($MAGENTA$PWD_SHORT$NO_COLOR)$NO_COLOR\r\n($YELLOW\#$NO_COLOR)\\$ "
}
## set PROMPT_COMMAND
PROMPT_COMMAND=PROMPT_UPDATE
PS2="> "
PS4="+ "
## append a xterm's dynamic title command for some terminal types
case $TERM in
xterm* | cygwin* | screen* | vt*)
## Xterm Title
XTERM_TITLE() {
echo -ne "\033]0;"
[ "$LOGNAME" != "netj" ] && echo -n $LOGNAME@
echo -n $HOSTNAME_SHORT: $PWD_SHORT
echo -ne "\007"
}
# change Xterm title
export PROMPT_COMMAND="$PROMPT_COMMAND; XTERM_TITLE"
;;
esac
# set PROMPT_DATE if not set
# from 2.05b, bash supports custom date formats with \D{...}
PROMPT_DATE=${PROMPT_DATE:-"`date '+%Y-%m-%d %a %T'`"}
PROMPT_DATEFMT=${PROMPT_DATEFMT:-"\D{$CYAN%Y-%m-%d $MAGENTA%a} $NO_COLOR\t"}
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[0;34m\]"
CYAN="\[\033[0;36m\]"
MAGENTA="\[\033[0;35m\]"
YELLOW="\[\033[0;33m\]"
BLACK="\[\033[0;30m\]"
GRAY="\[\033[0;37m\]"
WHITE="\[\033[0;38m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_MAGENTA="\[\033[1;35m\]"
LIGHT_YELLOW="\[\033[1;33m\]"
LIGHT_WHITE="\[\033[1;37m\]"
NO_COLOR="\[\033[0m\]"
HOSTNAME_SHORT=${HOSTNAME%%.*}
TTY=$(tty); TTY=${TTY#/dev/}
## set shell prompt
shopt -s checkwinsize
PROMPT_UPDATE() {
case "$PWD" in
$HOME*) PWD_SHORT="${PWD/$HOME/~}" ;;
*) PWD_SHORT="$PWD" ;;
esac
PS1="($LOGNAME@$TTY@$HOSTNAME_SHORT)-($PWD_SHORT)"
if [ ! -n "$COLUMNS" ]; then
local fillsize=0
else
local fillsize=$((${COLUMNS}-${#PS1}))
fi
local fill=""
if [ $fillsize -gt 0 ]; then
while [ $((${#PROMPT_FILL})) -lt ${COLUMNS} ]; do
PROMPT_FILL="$PROMPT_FILL-"
done
fill="${PROMPT_FILL:0:${fillsize}}"
elif [ $fillsize -lt 0 ]; then
fill=""
local prefix=${PWD_SHORT:0:5}
local PWD_SHORT="$prefix..${PWD_SHORT:$((2+${#prefix}-${fillsize}))}"
fi
PS1="\
$NO_COLOR($RED$LOGNAME$NO_COLOR@$GREEN$TTY$NO_COLOR@$BLUE$HOSTNAME_SHORT$NO_COLOR)$CYAN-$fill$NO_COLOR($MAGENTA$PWD_SHORT$NO_COLOR)$NO_COLOR\r\n($YELLOW\#$NO_COLOR)\\$ "
}
## set PROMPT_COMMAND
PROMPT_COMMAND=PROMPT_UPDATE
PS2="> "
PS4="+ "
## append a xterm's dynamic title command for some terminal types
case $TERM in
xterm* | cygwin* | screen* | vt*)
## Xterm Title
XTERM_TITLE() {
echo -ne "\033]0;"
[ "$LOGNAME" != "netj" ] && echo -n $LOGNAME@
echo -n $HOSTNAME_SHORT: $PWD_SHORT
echo -ne "\007"
}
# change Xterm title
export PROMPT_COMMAND="$PROMPT_COMMAND; XTERM_TITLE"
;;
esac
# set PROMPT_DATE if not set
# from 2.05b, bash supports custom date formats with \D{...}
PROMPT_DATE=${PROMPT_DATE:-"`date '+%Y-%m-%d %a %T'`"}
PROMPT_DATEFMT=${PROMPT_DATEFMT:-"\D{$CYAN%Y-%m-%d $MAGENTA%a} $NO_COLOR\t"}
바로 확인해 보려면...
$ . .prompt
해주면 바뀐 프롬프트를 확인할 수 있을 것이다.
추가로 쉘에 로그인 시 자동으로 예쁜 프롬프트를 보고 싶다면.. .bashrc의 마지막 부분에 아래의 내용을 추가해면 된다.
$ vi .bashrc
...
if [ -f $HOME/.prompt ]; then
. $HOME/.prompt
fi
if [ -f $HOME/.prompt ]; then
. $HOME/.prompt
fi
그냥 보고만 있어도 흐뭇하다 ㅋㅋㅋ
추가로 쉘 프롬프트에 관련된 내용은 http://www.haansoftlinux.com/magazine/magazineView.php?no=1006&page=0&catalog=1 에서 참고할 수 있다.
'Linux > Tip' 카테고리의 다른 글
우분투 / 데비안 계열 고정 ip 설정 (4) | 2010.01.06 |
---|---|
diff and patch in linux (0) | 2009.12.12 |
vi 문자열 치환 (2) | 2009.08.31 |
Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제.. (1) | 2009.08.25 |
리눅스 IP 설정 (0) | 2008.04.24 |