답변:
파일 PS1
에서 프롬프트 변수를 다음 ~/.bashrc
과 같이 설정하여이를 수행 할 수 있어야합니다 .
PS1='[\u@\h \w]\$ '
컬러로 표시하려면 (대담한 경우-터미널 에뮬레이터가 활성화했는지 여부에 따라 다름) 이스케이프 컬러 코드를 추가해야합니다.
PS1='\[\e[1;91m\][\u@\h \w]\$\[\e[0m\] '
여기에서 1;91m
와 0m
부분 사이에서 이스케이프되지 않은 모든 항목 은 1;91
색상 (빨간색)으로 표시됩니다. 이스케이프 코드를 프롬 프 트의 다른 부분 주위에 두어 다른 색을 사용하되, 색을 재설정 0m
하거나 그렇지 않으면 터미널 출력을 채색해야합니다. 이후에 파일을 소싱하여 현재 쉘을 업데이트하십시오.source ~/.bashrc
귀하의 PS1
설정 위치를 찾아 시작과 끝에 .bashrc
삽입 하십시오 . '\[\e[1m\]'
\[\e[0m\]
\[
와 \]
쉘이 엉망 내부 라인 편집을 할 때 일부 망쳐 행위를 방지 화면에 0 공간을 차지 알 수 있도록 필요합니다. 당신은 그것에 대해 너무 걱정할 필요가 없습니다.\e[
CSI (제어 서열 도입기)로 알려져있다. 참조 된 Wikipedia 페이지에 나열된 대부분의 코드에서 사용 된 것을 볼 수 있습니다. \e
이스케이프 문자를 의미합니다.CSI 1m
굵게 표시하고 CSI 0m
글꼴을 재설정하여 나머지 텍스트는 정상입니다.Wikipedia에는 터미널 에뮬레이터가 지원하는 경우 사용할 수있는 ANSI 이스케이프 코드 의 전체 목록 이 있습니다.
이식성과 가독성을 tput
위해 이스케이프 코드를 하드 코딩 하는 대신 사용해야 합니다. 유일한 단점은 tput
ANSI 코드를 지원하지만 terminfo 데이터베이스가 손상되거나 누락 된 터미널 에서는이 방법이 작동하지 않지만, terminfo에 의존하는 많은 콘솔 앱이 제대로 작동하지 않을 수 있기 때문에 깨진 terminfo가 더 큰 문제입니다.
다음은 내가하는 일의 예입니다 .bashrc
.
# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "
일반화 된 버전의 모습은 다음과 같습니다. 는 0
마지막 명령의 종료 상태입니다.
이것은 cygwin bash 쉘에서 기본 프롬프트입니다.
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
\[\e]0;\w\a\] = Set the Window title to your current working directory
\n = new line
\[\e[32m\] = Set text color to green
\u@\h = display username@hostname
\[\e[33m\] = Set text color to yellow
\w = display working directory
\[\e[0m\] = Reset text color to default
\n = new line
\$ = display $ prompt
참고 문헌 :
man bash
및 확인 PROMPTING
절을 참조하십시오.이 쉘 함수를 사용하여 터미널에서 텍스트 속성을 가져옵니다.
color () {
if [ -z "$1" -a -z "$2" -a -z "$3" ]; then
echo "\033[0m"
return
fi
case $1 in
black) color_fg=30;;
red) color_fg=31;;
green) color_fg=32;;
yellow) color_fg=33;;
blue) color_fg=34;;
magenta|purple) color_fg=35;;
cyan) color_fg=36;;
white) color_fg=37;;
-) color_fg='';;
*) color_fg=39;;
esac
case $2 in
bold) color_bd=1;;
italics) color_bd=3;;
underline) color_bd=4;;
inverse) color_bd=7;;
strike) color_bd=9;;
nobold) color_bd=22;;
noitalics) color_bd=23;;
nounderline) color_bd=24;;
noinverse) color_bd=27;;
nostrike) color_bd=29;;
-) color_bd='';;
*) color_bd=0
esac
case $3 in
black) color_bg=40;;
red) color_bg=41;;
green) color_bg=42;;
yellow) color_bg=43;;
blue) color_bg=44;;
magenta|purple) color_bg=45;;
cyan) color_bg=46;;
white) color_bg=47;;
-) color_bg='';;
*) color_bg=49;;
esac
s='\033['
if [ -n "$color_bd" ]; then
s="${s}${color_bd}"
if [ -n "$color_fg" -o -n "$color_bg" ]; then
s="${s};"
fi
fi
if [ -n "$color_fg" ]; then
s="${s}${color_fg}"
if [ -n "$color_bg" ]; then
s="${s};"
fi
fi
if [ -n "$color_bg" ]; then
s="${s}${color_bg}"
fi
s="${s}m"
echo "$s"
unset s color_bd color_bg color_fg
}
그런 다음 사용하십시오.
color_reset=`color`
color_grbd=`color green bold`
color_bubd=`color blue bold`
PS1="\[${color_grbd}\][\u@\h]\[${color_reset}\]:\[$color_budb}\]\w\[${color_reset}\]> "
이 날 준다 굵은 녹색과 굵은 파란색입니다.[username@hostname]:cwd>
username@hostname
cwd
~/.bashrc
합니까?
~/.bashrc
파일에 설정하고 프롬프트를 설정하는 데 사용합니다. 사용중인 시스템에 따라 색상이 변경되기도합니다.