¿Como cambio los colores del prompt en la Terminal?

¡Argentinos!

No hay dudas para nadie que la consola es una excelente plataforma para imponer la Justicia Social en la Argentina, tanto como para manejar un sistema GNU con Linux.

Incluso quien la domine poco podrá comprender que el poderío y la ductilidad de su accionar nos permite hacernos rápidamente del control total del entorno para hacer cualqueir cosa, incluso remotamente. Sabemos ya que a través de SSH incluso podremos estar en la China y manejar nuestro sistema en la Argentina, de forma segura y cifrada.

Ahora bien, el programa intérprete para la Consola de Línea de Comandos normalmente es el conocido Bash, que viene por defecto en Ubuntu y muchas otras distribuciones GNU con Linux. Existen otros de mayor poderío, pero la popularidad de Bash radica en estar en casi todos los sistemas lo utilizan y por lo tanto es altamente peronista y compatible.

Una de sus características poco conocidas es la de usar color, condición que suele estár desactivada por defecto en aras de la compatibilidad con equipos antiguos con monitores monocromáticos, o impresión de agujas.

El Justicialismo no es un movimiento gregario, pero tampoco uno apegado a los viejos tiempos. Se ha actualizado doctrinalmente para la toma del poder, y bien que lo ha hecho, si no, hubiésemos perecido y sido sólo una página en la historia.

Hoy en día, la mayoría de quienes emplean una Terminal de intérprete de líneas de comandos, lo hacen visualizando los resultados en un monitor a color. Por ello, podríamos querer activar esta funcionalidad de mostrar colores.

¿Su ventaja? Podremos ver colores también en el prompt, esto es, en el receptor de órdenes de comandos. Se preguntarán para qué quisiera tal cosa, y la respuesta es simple.

Desde el punto de vista práctico, podremos identificar rápidamente cual es el host de nuestro usuario, o podremos identificar el prompt y las órdenes rápidamente entre todas las devoluciones que nos haga la terminal. Imaginemos una serie larga de trabajo con nuestra Terminal, en el cual instalemos mucha paquetería o compilemos y procesemos datos en amplitud; normalmente ello significa que los prompts de órdenes quedarán mezclados entre toda la información devuelta, y sea tedioso buscarlos dentro de todo el texto. Al contar con color, será mucho más fácil identificar "la aguja en el pajar" y encontrar las órdenes que hayamos tipeado nosotros... Por otro lado, el resultado es más vistoso, y en gustos no hay nada escrito.

Activar un prompt de color es muy sencillo, simplemente hay que modificar el archivo de configuración del intérprete de comandos de nuestro usuario. Normlamente se trata del archivo .bashrc

Para ello edito el archivo con

nano ~/.bashrc

Esto abrirá el editor GNU Nano, y nos presentará el archivo de configuración en cuestión. Utilizo la combinación Buscar (Ctrl+W) para buscar el siguiente texto:

#force_color_prompt=yes

y le borro el "#" para descomentarlo y activar la funcionalidad, de manera que quede:

force_color_prompt=yes

Guardo la modificación en el archivo (Ctrl+O). Si abro una terminal nueva (con Ctrl+Alt+T) la misma ya debería presentar un prompt a color.

El prompt debería ser verde claro, definido por el color 1,32). Afortunadamente, todos los controles del prompt son programables, incluso su color. Los mismos han de programarse en el archivo .bashrc, con un código que representa los 16 colores ANSI estandarizados. Esto no quita que algunos emuladores de terminal permitan cambiar directamente el color emulado, pero los valores tabulados "reales" son los siguientes:

Color por defecto (normalmente el blanco)0,00
Negro 0;30
Gris Oscuro 1;30
Azul 0;34
Celeste 1;34
Verde oscuro 0;32
Verde claro 1;32
Cián 0;36
Verde agua 1;36
Rojo 0;31
Rojo claro 1;31
Violeta 0;35
Lila 1;35
Marrón 0;33
Amarillo 1;33
Gris Claro 0;37
Blanco 1;37

En mi caso, he decidido modificar el color del prompt para que el color del usuario aparezca en verde y el del host en amarillo (pues uso mucho trabajar en equipos remotos, y me facilita identificar en cual sesión estoy logueado).

Para lograr lo antedicho, debo editar nuevamente el archivo .bashrc. Uso el comando "Buscar" (Ctrl+W) para dar con la siguiente línea original en el archivo:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Esta línea, en particular la cadena PS1 describe la forma del Prompt, y le asigna colores por defecto.

En mi caso, altero su contenido de la siguiente manera (en el cual, naturalmente, las aclaraciones en color simplemente son informativas para que se aprecie el código del color que he escogido en cada momento):

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;34m\]@\[\033[01;33m\]\h\[\033[00;33m\]:\[\033[01;34m\]\w\[\033[00m\]$ '

Luego guardo el fichero de configuración con Ctrl+O. Una vez iniciada la terminal el prompt quedará de la siguiente manera:

usuario@equipo:~$

El tratamiento del Prompt permite una total personalización del mismo. Por ejemplo, podríamos probar con uno que nos ilustra de forma fija la ruta y la hora en la parte superior de la pantalla, si usamos este comando.

PS1='\e[1A\e[s\e[H\e[33;41;1m\e[K\w\e[200C\e[8D\e[37;41;1m [\A]\e[3m\e[u\n\[\033[36m\][\u]\[\033[33m\] \$\[\033[0m\] '
Naturalmente, si lo incluimos en la línea correspondiente de la variable PS1 del archivo .bashrc, este cambio será aplicado siempre que iniciemos una terminal.