이번 포스트에서는 bash에서 사용할 만한 이쁜 프롬프트를 소개해드릴려고 합니다.
원글은 훌륭한녀석의끄적꺼림님 포스트 입니다.
zsh를 사용하시는 분들도 많으시지만 전 아직 bash가 더욱 좋습니다.
oh my zsh의 여러 테마들 보다는 못하지만 원하는 정보는 충분히 얻어지네요
우선 홈폴더에 .myprompt와 같은 식으로 원하는 파일명으로 아래의 소스코드를 붙여넣습니다.
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"}
출처: http://hulryung.tistory.com/26 [훌륭한녀석의 끄적거림]
# 예쁜 프롬프트 소스
## 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"}
출처: http://hulryung.tistory.com/26 [훌륭한녀석의 끄적거림]
파일을 저장하신 후 $. .myprompt 명령을 내려주시면 아래와 같이 예쁜 프롬프트가 출력됩니다.
$ . .prompt
해주면 바뀐 프롬프트를 확인할 수 있을 것이다.
출처: http://todayis.tistory.com/193 [Superstar's New World]
$ vi .bashrc
if [ -f $HOME/.prompt ]; then
. $HOME/.prompt
fi
출처: http://todayis.tistory.com/193 [Superstar's New World]
$ vi .bashrc
if [ -f $HOME/.prompt ]; then
. $HOME/.prompt
fi
출처: http://todayis.tistory.com/193 [Superstar's New World]
터미널 창을 실행시킬때 마다 myprompt를 적용시키시려면 홈디렉토리의 .bashrc파일의 맨 마지막에 아래의 코드를 삽입 후 저장해 주세요
vi .bashrc
. $HOME/.prompt
fi
출처: http://todayis.tistory.com/193 [Superstar's New World]
# 홈 디렉토리에 .myprompt파일이 있으면 실행시킴
[[ -f ~/.myprompt ]] && . ~/.myprompt