O negrito é definido por 01
, então você precisa adicionar 01;
antes de cada especificação de cor:
\[3[01;36m\][\[3[m\]\[3[01;34m\]\u@\h\[3[m\] \[3[01;32m\]\W\[3[m\]\[3[01;36m\]]\[3[m\] $
Minha variável $PS1
é
\[3[36m\][\[3[m\]\[3[34m\]\u@\h\[3[m\] \[3[32m\]\W\[3[m\]\[3[36m\]]\[3[m\] $
Eu desejo manter as mesmas cores e texto, mas faça o prompt aparecer em negrito . Como faço isso?
Eu olhei pela web e descobri que isso pode ser feito usando tput bold
, mas o prompt pareceu quebrado para mim, devo estar fazendo errado.
O negrito é definido por 01
, então você precisa adicionar 01;
antes de cada especificação de cor:
\[3[01;36m\][\[3[m\]\[3[01;34m\]\u@\h\[3[m\] \[3[01;32m\]\W\[3[m\]\[3[01;36m\]]\[3[m\] $
Solução 1:
Você tenta algo assim:
PS1="\[3[36m\][\[3[m\]\[3[34m\]\[\e[1m \u@\h \e[0m\] \[3[32m\]\W\[3[m\]\[3[36m\]]\[3[m\] $"
Para alteração permanente no prompt do bash, coloque-o em .bashrc
Solução 2: usando 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\] "
Eu vejo que existem outras respostas que são bastante heurísticas. No entanto, se você tiver necessidades mais específicas (como você pode fazer no futuro), eu tenho um script que pode ser útil para você.
# "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=""
if [ "$color_support" = true ]
then
color=""
style=()
background=""
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"
}
Oferece estilos de texto em negrito, itálico, sublinhado e reverso, bem como as cores suportadas no bash. Você também pode exportar a função caso não queira adicioná-la diretamente ao .bash_profile
.
Aqui está um exemplo de como você pode usá-lo para formatar o prompt (observe que o prompt requer uma sintaxe diferente):
colorize_prompt() {
colorize $@ &>/dev/null
if [ "$color_support" = true ]
then
text="\[\e[$style$color$background\]\[\e[0m\]"
fi
echo $text
}
# Main prompt
PS1="$(colorize_prompt "火" purple bold) $(colorize_prompt "\w" blue bold) "
# Continuation prompt
PS2="$(colorize_prompt "|" cyan bold) "
Se você estiver usando o ubuntu 18.04, execute os seguintes comandos
cp /etc/skel/.bashrc ~/.profile
É isso. Você terá um usuário @ host em negrito no prompt