答案1
这就是我所做的。我使用 tput(1) 而不是额外的转义语句,因为转义语句对于人类来说很难阅读。
这是来自我的 .bashrc
### Set the prompt like "username@hostname:~ $"
# See: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
# And: http://mywiki.wooledge.org/BashFAQ/037
# 'tput bold' will work regardless of the foreground and background colors.
# Place the tput output into variables, so they are only execd once.
bold=$(tput bold)
reset=$(tput sgr0)
export PS1="\u@\[$bold\]\h\[$reset\]:\w \$ "
这是另一种选择。这比转义序列更具可读性。
# Bash
red=$(tput setaf 1)
green=$(tput setaf 2)
blue=$(tput setaf 4)
reset=$(tput sgr0)
PS1='\[$red\]\u\[$reset\]@\[$green\]\h\[$reset\]:\[$blue\]\w\[$reset\]\$ '
答案2
为了便于使用,您可以首先将颜色映射到您的提示变量中.bashrc
,然后在提示变量 ( $PS1
) 中重用它:
第 1 步:映射颜色:
#~/.bashrc
# Color mapping
grey='\[\033[1;30m\]'
red='\[\033[0;31m\]'
RED='\[\033[1;31m\]'
green='\[\033[0;32m\]'
GREEN='\[\033[1;32m\]'
yellow='\[\033[0;33m\]'
YELLOW='\[\033[1;33m\]'
purple='\[\033[0;35m\]'
PURPLE='\[\033[1;35m\]'
white='\[\033[0;37m\]'
WHITE='\[\033[1;37m\]'
blue='\[\033[0;34m\]'
BLUE='\[\033[1;34m\]'
cyan='\[\033[0;36m\]'
CYAN='\[\033[1;36m\]'
NC='\[\033[0m\]'
步骤 2. 重新定义 PS1 变量:
PS1="$yellow[$CYAN\t$yellow][$red\H$yellow][$GREEN\w$grey$yellow]$NC# "
答案3
有一个很好的参考页面描述了如何为 bash 提示符着色Arch Linux 维基。
它包括有关颜色、转义序列以及在提示中包含其他字符或打印信息(例如目录、主机等)的正确方法的信息。
举个例子,一个简单的提示,如:
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '
可以分为以下几个要素:
\[\e[1;32m]
- 绿色方括号 (1;32m)
[\u@h \W]
- 用户名@主机名和当前工作目录的基本名称
\$
- 提示(#
如果 UID 为 0,则为 a)
\[e[0m\]
- 文本重置转义信号表示颜色序列的结束。
使用这些序列,您可以构建色彩丰富、信息丰富的提示。
需要注意的是:如果您未能正确转义序列,则可能会对终端打印文本的能力造成严重破坏。
答案4
这是我的 .bashrc:
case $HOSTNAME in
plato*) PSC="\e[1;33m" ;;
*) PSC="\e[36m" ;;
esac
PS1="[\j]\[${PSC}\]\u@\h(\l) \[\e[37m\][ \w ]\[\e[00m\]\n\[\e[1m\]\#\[\e[0m\] \$ "
编辑口味。我的主工作站与其他主机也使用了不同的颜色。