我的$PS1
变量是
\[\033[36m\][\[\033[m\]\[\033[34m\]\u@\h\[\033[m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $
我希望保持相同的颜色和文本,但让提示出现在大胆的。我该如何实现这个目标?
我查看了网页并发现可以使用来完成此操作tput bold
,但提示对我来说似乎有问题,我一定是做错了。
答案1
粗体设置如下01
,因此需要01;
在每个颜色规范前添加:
\[\033[01;36m\][\[\033[m\]\[\033[01;34m\]\u@\h\[\033[m\] \[\033[01;32m\]\W\[\033[m\]\[\033[01;36m\]]\[\033[m\] $
答案2
我看到还有其他答案,它们非常具有启发性。但是,如果您有更具体的需求(将来您可能会有),我有一个脚本可能对您有帮助。
# "Colorize" the plain text.
#
# Usage:
#
# $ colorize "TEXT" COLOR ["STYLE"] [BACKGROUND]
#
# Notes:
# - STYLE may be either a single value or a space-delimited string
#
# Examples:
#
# $ colorize "Hey!" blue bold
# $ colorize "Yo!" red italic white
#
colorize() {
text="$1"
if [ "$color_support" = true ]
then
color="$2"
style=($3)
background="$4"
colors=(black red green yellow blue purple cyan white)
styles=(regular bold italic underline reverse)
sn=(0 1 3 4 7)
for n in {0..7}
do
[[ $color == ${colors[n]} ]] && color="3$n"
[[ $background == ${colors[n]} ]] && background="4$n"
for s in ${!style[@]}
do
[[ ${style[s]} == ${styles[n]} ]] && style[s]="${sn[n]}"
done
done
! [ -z $style ] && style="${style[*]};" && style=${style// /;}
! [ -z $background ] && background=";$background"
background+="m"
text="\e[$style$color$background$text\e[0m"
fi
echo "$text"
}
它提供粗体、斜体、下划线和反转文本样式,以及 bash 中支持的颜色。如果您不想.bash_profile
直接添加该函数,也可以将其导出。
下面是一个如何使用它来格式化提示的示例(请注意,提示需要稍微不同的语法):
colorize_prompt() {
colorize $@ &>/dev/null
if [ "$color_support" = true ]
then
text="\[\e[$style$color$background\]$1\[\e[0m\]"
fi
echo $text
}
# Main prompt
PS1="$(colorize_prompt "火" purple bold) $(colorize_prompt "\w" blue bold) "
# Continuation prompt
PS2="$(colorize_prompt "|" cyan bold) "
答案3
解决方案 1:
你可以尝试这样的方法:
PS1="\[\033[36m\][\[\033[m\]\[\033[34m\]\[\e[1m \u@\h \e[0m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $"
要永久更改 bash 提示符,请将其放入.bashrc
解决方案 2:使用tput
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=$blue
PS1="\[$reset\]\[$cyan\][ \[$bold\]\[$user_color\]\u@\h\
\[$reset\]\[$blue\]\W\[$cyan\] ] \[$reset\]\[$reset\]\\$\[$reset\] "
答案4
如果你使用的是 ubuntu 18.04,请运行以下命令
cp /etc/skel/.bashrc ~/.profile
就是这样。你将得到一个粗体用户@主机在提示下