Contexto y Pregunta
Hay muchas formas de colorear el entorno de la terminal y el shell. La salida de comandos individuales, como ls
y grep
, también se puede colorear. La noción de reproducir medios en la consola no está directamente relacionada, pero es interesante, pero aparentemente se basa en algún marco (bibliotecas) sobre el sistema de ventanas. La siguiente pregunta está dirigida únicamente al bash
shell y su implementación en el marco de terminal de Linux y sus fundamentos.
Considere el siguiente montaje de "representaciones" ASCII de una escena en un juego 2D:
Estas no son escenas generadas aleatoriamente. Todos los segmentos que he seleccionado en realidad representan algún tipo de terreno de "pradera" (árboles, arbustos y arbustos, flores, hierba, etc.) de un juego que usa caracteres ASCII para representar dichos objetos. Las últimas 4 escenas muestran conjuntos de fichas creados por usuarios que son básicamente una reasignación de caracteres ASCII con especificaciones de color (dichos detalles son triviales; baste decir que esta es la inspiración visual de lo que estoy tratando de lograr aquí en términos de imágenes y " patrón”).
Las características comunes que comparten esas escenas en el montaje son:
- 5-6 caracteres ASCII diferentes como máximo (comas, comillas y algunos otros)
- Se usaron de 2 a 4 colores
- para los personajes
- para los fondos de los personajes en algunos casos:el último ejemplo está ahí para mostrar el uso de tonos de color con poco o ningún carácter para crear un patrón, es decir, un mosaico de colores
Lo que tengo en una VM en este momento es Arch Linux y aunque la pregunta no es específica de la distribución, he buscado en su documentación para personalizar el /etc/bash.bashrc
expediente. Puedo ver que hay muchas explicaciones para configurar la apariencia del indicador y, en general, todos los elementos de primer plano. Hay poca información sobre cualquier configuración para el fondo, excepto por lo general para un color sólido, como estos ajustes y consejos:
# Background
On_Black='e[40m' # Black
On_Red='e[41m' # Red
On_Green='e[42m' # Green
On_Yellow='e[43m' # Yellow
On_Blue='e[44m' # Blue
On_Purple='e[45m' # Purple
On_Cyan='e[46m' # Cyan
On_White='e[47m' # White
Todavía no entiendo conceptualmente qué son esos "espacios" vacíos/en blanco/de fondo que no escribí cuando uso la consola, es decir, "¿de qué están hechos?" por así decirlo. Especialmente aquellos que no están en el aviso, y que envuelven los comandos que se repiten. Con respecto a lo que sucede en la línea activa, es posible demostrar que bash
actúa de forma "orientada a la línea" y que algunas operaciones activan una limpieza de la línea activa (for i in $(seq 1 $(expr $(tput lines) * $(tput cols))); do echo -n M; done; tput cup 15 1
, luego, cuando se le solicite, escriba un carácter y retroceda (lo demostró un colaborador), cuyo alcance puede variar de una CLI a otra, es decir, zsh. Además, parece que cuando agrego algo como [