Añadir color al shell (Bash)

Septiembre 2017



Utilidad


Personalizando el color de los caracteres del promt (o del shell), se los hace más visibles. Si adoptas una convención de colores, podrás transmitir lo que quieres expresar según el color, y además evitar tener un shell demasiado monótono.

Qué información pueden ser transmitida mediante los colores


Puedes poner el prompt en verde para una máquina anfitriona y en azul para otra, o en verde si el sistema no está sobrecargado, en amarillo si está un poco y en rojo si casi todos los recursos están siendo utilizados. O simplemente puedes elegir un color determinado para el prompt de usuario root.

Las técnicas


Existen dos técnicas. La más utilizada (pero no la más eficaz) consiste en insertar caracteres de escape (estos tienen un significado especial para el interprete de ordenes). Por ejemplo, la siguiente cadena muestra el prompt en azul:

$ PS1="\[\033[0;34m\][\u@\h]\[\033[0m\]"


Este método presenta dos inconvenientes: su sintaxis no es muy sencilla, lo que provoca errores al escribirla, y sólo puede ser utilizado si la ventana del terminal soporta las secuencias de escape ANSI, lo que no es el caso para muchos terminales, ni para programas de emulación de terminales. Es mejor utilizar la técnica basada en tput.

Técnica de tput


Cuando añades color al prompt (o al shell) con tput, las definiciones pueden ser aplicadas a otros emuladores de terminales. tput sabe que secuencias de escape se deben utilizar, lo que te evita esta fastidiosa búsqueda.

$ BLUE=$ (tput setaf 4)
$ BLACK=$ (tput setaf 0)
$ PS1="\ [$BLUE\] \u@\h] \ [$BLACK\] "


Interpretemos estas líneas:
La primer línea del ejemplo utiliza tput para definir una variable que contiene la secuencia de caracteres para poner el color de frente en Azul (para los próximos caracteres a mostrar). La segunda línea hace lo mismo para el negro. No es necesario conocer las secuencias de escape, ya que tput maneja un archivo de correspondencia de las descripciones para todos los terminales, el cual consulta para encontrar la secuencia apropiada al terminal físico o emulado. La tercera línea, utiliza las dos variables $BLUE y $BLACK en la definición de la variable $PS1.
Pero tput puede hacer mucho más que añadir color a los caracteres del shell.

Nota: Puedes mostrar la lista completa mediante los comandos man tput y man terminfo.

Consulta también

Publicado por Carlos-vialfa. Última actualización: 26 de junio de 2009 a las 21:54 por Carlos-vialfa.
El documento «Añadir color al shell (Bash)» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.