Métodos de pago Abuse

Colores del terminal Linux

26.09.2021, 22:47

La ventaja de Linux es que puedes personalizar cualquier cosa si quieres. Esta es la ventaja de los sistemas proyectivos sobre los procedimentales. Es una especie de constructor formado por bloques individuales, cada uno de los cuales puede personalizarse a voluntad.

Es especialmente interesante si no te limitas a copiar soluciones ya hechas, sino que intentas entender qué y cómo funciona. E incluso cuando se resuelve una tarea frívola, se aprende algo nuevo.

Colorear los colores de la salida

Por ejemplo, quieres ajustar los colores del terminal linux en la salida del comando ls.

De la documentación de ls se deduce que el ajuste de los colores de la salida se realiza mediante la utilidad dircolors, que establece los parámetros de color desde su propia base de datos o los toma del archivo ~/.dircolors. También se mencionó que la inicialización del uso de colores se realiza a través de ~/.bashrc, el archivo de configuración del shell, y que los propios parámetros se definen a través de la variable LC_COLORS.

Se encontró el siguiente script en .bashrc:

Su esencia es comprobar la presencia de la utilidad dircolors en el sistema, asignar un valor a la variable y, si tiene éxito, utilizar el parámetro --color=auto cada vez que se llame a ls.

Si ejecuta la utilidad dircolors, ésta mostrará el valor de la variable LC_COLOR.

También es posible mostrar el valor de la variable LC_COLORS de forma estructurada, especificando la clave:

$ dircolors -p

Como la salida es larga, no la daré aquí.

Si se redirige la salida dircolors -p > ~/.dircolors, se creará un fichero estructurado del que se tomarán los ajustes de color. Al editar este archivo y establecer la configuración de color para la salida de ls.

En el archivo .dircolors creado hay una pista:

Configurando la secuencia mediante punto y coma y obtendremos el color que necesitamos en la consola linux, según el listado. Los colores de la terminal linux van del 30 al 37 para el color de la fuente, y del 40 al 47 para el fondo. Por ejemplo:

DIR 01;34 implica que los nombres de los directorios estarán en negrita y en azul.

Pero de esta forma sólo se obtienen ocho colores, y los emuladores de terminal modernos son capaces de mostrar al menos 256.

Hay otras formas de establecer el color. Por ejemplo, EXEC 38;5;208;1 da una fuente gruesa naranja para los archivos ejecutables.

Para no tener que repasar manualmente los colores de linux, existe una tabla de colores ya preparada

Sustituyendo el valor de color 38;5;x - donde x es el color de la tabla, obtenemos el resultado necesario. Se obtiene algo así:

¿Cómo funciona? La cuestión es que la configuración del color de salida de la información en el emulador de terminal se realiza con la ayuda de los códigos de escape ANSI. Se trata de una determinada secuencia de caracteres que no se imprime en la pantalla, pero que afecta a la salida. Se llama así porque empieza por [ - código "Esc". Dado que existen muchos terminales y emuladores de terminal, estos códigos de control están normalizados. El control de color mediante la secuencia del 30 al 37 es el estándar ECMA-48. Encontrará información al respecto en la sección console_codes.

Colorear la línea de invitación

Una vez que entienda cómo establecer los colores de linux a través de los códigos esc, es fácil rediseñar y colorear la línea de invitación. La variable PS1, definida en el archivo ~/.bashrc, es la responsable de su salida

En Linux Mint, el script para inicializarla tiene este aspecto:

Es decir, primero se determina si el script ha sido ejecutado por root o por un usuario normal. Como en la gran mayoría de los casos es la segunda opción, se debe editar la línea que sigue al primer 'else'. El formato de la línea se descifra en la documentación de bash, en la sección "Promting". Implica que la secuencia esc debe empezar por "[" y terminar por "]". Así:

  • [[01;32m] - establece el color verde;
  • u - muestra el nombre de usuario;
  • h - muestra el nombre del host;
  • [[00m] - borra los atributos establecidos;
  • [[01;34m] - establece el color azul;
  • w - muestra el nombre del directorio de trabajo;
  • Hola - un ejemplo de que se puede mostrar cualquier texto derivado.

Qué más se puede mostrar en el prompt:

  • d - la fecha, en el formato "Wed Dec 28";
  • A - la hora, en formato de 24 horas;
  • ¡! - número del comando actual en el historial;
  • - transferencia de la salida a otra línea;

Introduzcamos algo más interesante:

PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '

Y la línea de prompt se verá así: