Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Añadiendo color

La mayoría de los programas emuladores de terminal responden a ciertas secuencias de caracteres que no se imprimen para controlar cosas como los atributos de los caracteres (como el color, el texto en negrita y el temido texto parpadeante) y la posición del cursor. Cubriremos la posición del cursor en un momento, pero primero veremos el color.


imagen

Confusión terminal

En la antigüedad, cuando las terminales estaban conectadas a computadoras remotas, había muchas marcas de terminales en competencia y todas funcionaban de manera diferente. Tenían diferentes teclados y todos tenían diferentes formas de interpretar la información de control. Los sistemas Unix y similares a Unix tienen dos subsistemas bastante complejos para lidiar con la babel del control de terminal (llamado termcap y información terminológica). Si busca en los recovecos más profundos de la configuración de su emulador de terminal, puede encontrar una configuración para el tipo de emulación de terminal.

En un esfuerzo por hacer que los terminales hablen algún tipo de lenguaje común, el Instituto Nacional de Estándares de América (ANSI) desarrolló un conjunto estándar de secuencias de caracteres para controlar los terminales de video. Los antiguos usuarios de DOS recordarán AN-SI.SYS archivo que se utilizó para permitir la interpretación de estos códigos.


El color de los caracteres se controla enviando al emulador de terminal un Código de escape ANSI incrustado en el flujo de caracteres que se mostrarán. El código de control no se “imprime” en la pantalla, sino que el terminal lo interpreta como una instrucción. Como vimos en la tabla de arriba, el \[ y \] Las secuencias se utilizan para encapsular caracteres que no se imprimen. Un código de escape ANSI comienza con un octal 033 (el código generado por la tecla de escape), seguido de un atributo de carácter opcional, seguido de una instrucción. Por ejemplo, el código para establecer el color del texto en normal (atributo = 0), el texto negro es:

\ 033 [0; 30m

A continuación, se muestra una tabla de colores de texto disponibles. Observe que los colores se dividen en dos grupos, diferenciados por la aplicación del atributo de carácter en negrita (1) que crea la apariencia de colores “claros”:


Tabla 13-2: Secuencias de escape utilizadas para establecer colores de texto


Secuencia

Color del texto

Secuencia

Color del texto

\ 033 [0; 30m

Negro

\ 033 [1; 30m

Gris oscuro

\ 033 [0; 31m

Rojo

\ 033 [1; 31m

Luz roja

\ 033 [0; 32m

Verde

\ 033 [1; 32m

Verde Claro

\ 033 [0; 33m

Marrón

\ 033 [1; 33m

Amarillo

\ 033 [0; 34m

Celeste

\ 033 [1; 34m

Azul celeste

\ 033 [0; 35m

Lila

\ 033 [1; 35m

purpúreo claro

Añadiendo color


\ 033 [0; 36m

Cian

\ 033 [1; 36m

Cian claro

\ 033 [0; 37m

gris claro

\ 033 [1; 37m

Blanco


Intentemos hacer un mensaje rojo. Insertaremos el código de escape al principio:



PS PS1 = "\ [\ 033 [0; 31 m \] <\ u @ \ h \ W> \ $"

PS

PS PS1 = "\ [\ 033 [0; 31 m \] <\ u @ \ h \ W> \ $"

PS


Eso funciona, pero observe que todo el texto que escribimos después del mensaje también es rojo. Para solucionar esto, agregaremos otro código de escape al final del mensaje que le dice al emulador de terminal que regrese al color anterior:



PS PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

PS

PS PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

PS


¡Eso es mejor!

También es posible establecer el color de fondo del texto utilizando los códigos que se enumeran a continuación. Los colores de fondo no admiten el atributo negrita.


Tabla 13-3: Secuencias de escape utilizadas para establecer el color de fondo


Secuencia

Color de fondo

Secuencia

Color de fondo

\ 033 [0; 40m

Negro

\ 033 [0; 44m

Celeste

\ 033 [0; 41m

Rojo

\ 033 [0; 45m

Lila

\ 033 [0; 42m

Verde

\ 033 [0; 46m

Cian

\ 033 [0; 43m

Marrón

\ 033 [0; 47m

gris claro


Podemos crear un mensaje con un fondo rojo aplicando un simple cambio al primer código de escape:



PS PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<me@linuxbox ~> $

PS PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<me@linuxbox ~> $


¡Pruebe los códigos de color y vea lo que puede crear!


imagen

Nota: Además de los atributos de carácter normal (0) y negrita (1), al texto también se le pueden asignar atributos de subrayado (4), parpadeo (5) e inverso (7). Sin embargo, en aras del buen gusto, muchos emuladores de terminales se niegan a respetar el atributo de parpadeo.


imagen


Top OS Cloud Computing en OnWorks: