¿Necesito encerrar secuencias de escape ANSI en \ [y \] en un indicador de bash?


4

Quiero personalizar mi solicitud de bash utilizando códigos de escape ANSI y he notado que en algunos procedimientos los códigos están encerrados \[y \]en otros no.

Por ejemplo, estos funcionan igualmente bien para mí:

PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '

Me pregunto qué diferencia hace?


1
Por favor, no publiques .
Dennis Williamson

Respuestas:


8

La diferencia es que en los que no tienen \[y \], bash no podrá rastrear la longitud real del mensaje y varios problemas visuales se revelarán con el tiempo.


6

Se explica muy bien en esta página :

Estas secuencias le dirán a bash que los caracteres encerrados no ocupan espacio en la línea, lo que permitirá que el ajuste de palabras continúe funcionando correctamente. Sin ellos, terminarás con un mensaje atractivo que desordenará la pantalla si escribes un comando que se aproxima a la extrema derecha del terminal.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.