He realizado algunas modificaciones en mi solicitud con el uso de colores a través de tput.
Parece que ahora cuando trato de hacer una arrow up
búsqueda después de algunos movimientos hacia arriba, el indicador se reduce a la mitad, lo que quiero decir con esto es:
De esto:
PROD mysuer@server1.domain.com:~$ vim .bashrc
A esto:
PROD mysuer@servegit rebase origin/add_pool
ctrl + c
trae todo de vuelta a la normalidad.
He encontrado algunas publicaciones que indican que esto puede deberse al problema con los escapes que faltan, [
sin embargo, no veo un problema aquí:
Mi código:
#red for prod, green for lab
COLOUR_RESET=$(tput sgr0)
COLOUR_GREEN=$(tput setaf 2)
COLOUR_BLUE=$(tput setaf 6)
COLOUR_YELLOW=$(tput setaf 3)
COLOUR_RED=$(tput setaf 1)
BOLD=$(tput bold)
if [[ $HOSTNAME =~ .*\.domain.com$ ]]; then
COLOUR=$COLOUR_RED
PROMPT_TEXT="PROD"
fi
if [[ $HOSTNAME =~ .*\.lab$ ]]; then
COLOUR=$COLOUR_BLUE
PROMPT_TEXT="LAB"
fi
MYPROMPT="$COLOUR$BOLD$PROMPT_TEXT$COLOUR_RESET \[\u@$COLOUR$BOLD$(hostname -f)$COLOUR_RESET:\w\]\$ "
PS1=$MYPROMPT
ACTUALIZACIÓN: @KamilMaciorowski ha señalado una pregunta similar, aunque no se relacionaba con los colores de tput.
command-line
bash
MMT
fuente
fuente
PROMPT_TEXT=
aunque tuve que cambiar el$MYPROMPT='${debian_chroot:+($debian_chroot)}\[\033[01;31m$($PROMPT_TEXT)\]\[\033[00m\] \[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Respuestas:
Mi respuesta en otro lado es casi suficiente, debes ajustar la salida de
tput
in\[ \]
.Casi suficiente, porque ya tienes
\[ \]
en lugares equivocados ; Deberías deshacerte de ellos.man 1 bash
dice:Esto significa que, por ejemplo,
$(hostname -f)
debe estar fuera de cualquier\[ \]
. Entonces tampoco\[
y\]
de laMYPROMPT
definición explícita y reemplazar cada=$(tput …)
con='\['"$(tput …)"'\]'
;o
cambia solo la
MYPROMPT
definición. Ajusté tu original:fuente
Al final tuve que soltar los colores de tput.
Mi último aviso:
fuente