En un aviso de Bash (variable PS1), estoy llamando a una función para agregar texto potencialmente a la solicitud: export PS1="\u@\h \$(my_function) \$ "
Sin embargo, la función en el indicador contiene códigos de color ANSI que cambian en función de la salida de la función (a veces roja, a veces verde). Agregar " \[
" a la variable PS1 debería escapar de esos códigos como no imprimibles, pero si hago un echo
en la función, " \[
" se imprime literalmente en el indicador.
¿Cómo puedo escapar de estos códigos de color ANSI desde una función para usar en un indicador de bash?
echo -e "\001\e[31m\002RED"
Funciona como se esperaba. ¡Gracias!\001
y\002
funcionará. De lo contrario, no estoy seguro. Dash, por ejemplo, definitivamente no usa readline .Aquí hay una buena respuesta completa. Tuve que investigar mucho más para averiguar a dónde tenía que ir el \ 001, etc. Espero que esto ayude.
Tal como lo configuré aquí, los paréntesis de la rama git solo aparecen si estás en una rama git, de lo contrario, está en blanco.
fuente
Según la respuesta de Grawity , lo siguiente incluirá secuencias de control ANSI en ASCII
SOH
(^A
) ySTX
(^B
) que son equivalentes\[
y\]
respectivamente:Úselo como:
O:
Como beneficio adicional, ejecutar la función varias veces no volverá a escapar de los códigos de control ya escapados.
fuente
Si desea usarlos en el indicador, entonces necesita hacer lo
\[
. Pero si quieres usarlo en un eco, tienes que usarlo\033[
.fuente