Colorear la terminal Linux

Colorear la terminal Linux.

Como continuación del anterior articulo «Mostrar colores en la Terminal Linux«, hoy veremos una formula de obtener resultados similares un tanto diferente. Ademas invocaremos un poco a la historia, siempre es bueno recordar de donde venimos para saber a donde vamos.

Sin más preámbulos comenzamos este articulo.

 

Colorear la terminal Linux

Un poco de historia

En la década de los 80, los ordenadores estaban aún en incipiente desarrollo y quienes trabajábamos con ellos nos encontrábamos con limitaciones que debíamos superar con grandes dosis de imaginación.

Una de las limitaciones más frecuente, era que las terminales de los ordenadores e incluso las pantallas de los ordenadores personales, eran monocromáticas, por lo que hacer que ciertos textos o ciertas partes de la pantalla resaltasen, no era tan sencillo como aplicar un color distinto. En muchos casos, los desarrolladores usábamos un conjunto de instrucciones que, aunque ya existía en los años 70, no era ampliamente conocido y, que nos permitía cambiar el tamaño de las letras, posicionar el cursor de forma arbitraria, escribir con los caracteres invertidos o subrayar párrafos enteros, por citar algunos ejemplos.

En la década de 1990, aparecieron los primeros terminales en color, lo que nos facilitaba la vida, pero aún había que trabajar con texto, los terminales gráficos y el software funcionando en modo gráfico, no aparecieron hasta finales de la década.

El conjunto de instrucciones que nos permitía jugar con la presentación de los textos, se llama “Código escape ANSI” y digo que se llama, porque sigue siendo válido y ampliamente utilizado.

Uno de esos casos, es el que nos ocupa; el uso del código de escape, nos permite cambiar el color del texto que nos ofrece la terminal o consola en nuestra distribución Linux o Unix.

 

Lo que podemos hacer

En las distribuciones Linux, la terminal o consola está guiada por una variable de entorno que le indica el qué y el cómo al presentar el “prompt”.

La variable en cuestión es PS1.

Si abrimos la consola / terminal (Ctrl+Alt+T) podemos ver el estado actual de la variable ejecutando lo siguiente:

Un ejemplo de salida podría ser….

\[\e]0;\u@\h \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\]

Si modificamos el contenido de PS1, alteramos la presentación y, entre otras cosas, también el color de los distintos segmentos que componen el “prompt”. La forma de presentar cambios en el color, es modificando el color del texto que se va a presentar y, ese color, estará determinado por la secuencia de escape de acuerdo al código escape ANSI. Si bien el código exacto es una variación del estándar ANSI, los colores son los mismos, de acuerdo con la siguiente tabla:

NormalBrillo
Negro08
Rojo19
Verde210
Amarillo311
Azul412
Violeta513
Cyan614
Blanco715

 

Damos forma a la variable

Además del color del texto, la variable PS1 está compuesta por diferentes secciones y, de acuerdo con el manual de Bash (el más común de los shell o intérprete de comandos) PS1 está compuesta por las secciones delimitadas por los siguientes caracteres especiales:

Carácter especialExplicación y uso
\aUn carácter campana.
\dLa fecha, en formato “Día de la semana Mes Día del mes” (por ejemplo “Tue May 26”).
\D{formato}
\eCarácter de escape.
\hEl nombre de anfitrión (host), hasta el primer ‘.’.
\HNombre del anfitrión.
\jEl número de tareas manejadas actualmente por la shell.
\lEl nombre base de del dispositivo terminal de la shell.
\nNueva linea.
\rRetorno del carro.
\sNombre de la shell, el nombre base de $0 (la parte que sigue a la última barra inclinada).
\tLa hora, en formato de 24 horas HH:MM:SS.
\TLa hora, en formato de 12 horas HH:MM:SS.
\@La hora, en formato de 12 horas am/pm.
\ALa hora, en formato de 24 horas HH:MM.
\uNombre del usuario actual.
\vVersión de Bash (por ejemplo 4.1).
\VDistribución de Bash, la versión más el nivel de parcheo.
\wEl directorio de trabajo actual, con $HOME abreviado con una tilde (utiliza la variable $PROMPT_DIRTIRM ).
\WEl nombre base de $PWD , con $HOME abreviado y una tilde.
\!Número de historia de este comando.
\#Número de comando de este comando.
\$Si el uid efectivo es 0, # , en caso contrario $ .
\nnnCarácter cuyo código ASCII coincide con el valor octal nnn.
\\Barra invertida.
\[Comienza una secuencia de caracteres no imprimibles. Esto puede usarse para introducir una secuencia de control del terminal dentro del prompt.
\]Finaliza una secuencia de caracteres no imprimibles.

Una vez conocidos los caracteres y a modo de ejemplo, podemos hacer un cambio en la variable, ejecutamos la siguiente secuencia, y comparamos el prompt que teníamos antes con el que aparece después de introducir el comando.

Ahora, vamos un poco más lejos y cambiamos el color del usuario y el servidor (tanto el texto como el color de fondo). De echo, podemos cambiar tres aspectos de cada sección, de acuerdo a la siguiente tabla:

Formato del textoColor del textoColor del fondo
0: Texto normal30: Negro40: Negro
1: Negrita31: Rojo41: Rojo
4: Texto subrayado32: Verde42: Verde
33: Amarillo43: Amarillo
34: Azul44: Azul
35: Violeta45: Violeta
36: Cyan46: Cyan
37: Blanco47: Blanco

Utilizaremos el comando (carácter especial) \e al comienzo y el carácter m al finalizar, indicando que es un esquema de color. Los valores de formato, en la secuencia fondo, formato, color, deben estar separados por coma (o punto y coma si nuestro sistema tiene localización española). Por ejemplo, el siguiente texto introducido en la variable PS1, hará que el prompt se presente en amarillo, subrayado y con fondo rojo:

ejemplo de salida después de un «echo«…

Ejemplo de como Colorear la terminal Linux

Ejemplo de como Colorear la terminal Linux

 

Como hacer que las modificaciones sean permanentes

Los valores definidos anteriormente desaparecen al cerrar la sesión del terminal. Si queremos que las modificaciones sean permanezcan (que aparezcan la próxima vez que abramos una terminal), tenemos que hacer algo más.

Si utilizamos el shell Bash, debemos modificar o crear un archivo en el directorio home que dependiendo de la distribución linux que utilices se llamará «~/.bashrc» o «~/.bash_profile».

En ese archivo, insertaremos el comando que modifica la variable PS1 según nuestras preferencias, de ese modo logramos que cada vez que abramos una terminal, ese archivo será leído previamente y la variable PS1 de esa sesión será la establecida de forma predeterminada.

Y con lo dicho, ponemos punto y final a este fantástico articulo fruto de la colaboración de HenryGR, gracias Henry.

 

Espero que este articulo sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir los manuales en tu sitio web, blog, foro o redes sociales.

 

Valora el articulo!!!
[Total: 3 Media: 5]

Agregar comentario