Poner fondo blanco en emulador de terminal bash en Debian 9
-
Un cordial saludo a todos/as.
Quizás me podáis ayudar.
Estoy siguiendo esta guía de Alejandro:
https://hardlimit.com/guia-servidor-en-debian/Tengo instalado Debian 9 sin entorno gráfico y quiero que la consola (bash) tenga el fondo blanco con las letras negras, pero no hay manera, cuando configuro blanco con setterm u otro tipo de comandos, el blanco no es blanco, sino gris.
Al aplicar el comando:
man bash
al final del texto indica GNU Bash 4.4
En el foro exDebian he abierto un tema para ver si alguien sabe como hacerlo, y nada.
https://exdebian.org/foro/poner-fondo-de-color-blanco-en-bash-debian-930-net-installTambién en la lista de correo de Debian en español:
https://lists.debian.org/debian-user-spanish/2018/01/msg00016.htmlEn alguna captura de la guía tiene la consola con el fondo blanco.
https://hardlimit.com/wp-content/uploads/2017/08/debian-9-ssh-login.png
Si alguien sabe como hacerlo, le agradecería la ayuda.
Gracias de antemano.
Nota: Tras escribirle un email a Alejandro me ha pedido que hiciera la consulta aquí, para que os podáis beneficiar todos/as de la respuesta(s).
Editado
-
@bienve En el caso concreto de esa guía, se usa Konsole como emulador de la consola (el de KDE 4 para ser más específicos). Este permite configurar perfiles pudiendo elegir el color del fondo y el texto:
Cada emulador tiene su propia configuración y usando Debian es más que probable que no estés usando KDE o Plasma. ¿Sabes qué emulador usas?
-
Gracias cobito por tu aportación.
Estoy usando Debian 9 sin entorno gráfico, y el emulador de terminal que usa es GNU Bash 4.4, según indica al final el texto que muestra al aplicar el comando man bash.
-
@bienve Prueba con esto: echo -en "\e]P0ffffff"
· -en habilita los caracteres de escape
· \e] es el carácter de escape
· P0 marca el espacio de color (de 0 a F)
· ffffff es el blanco más brillante. Son los niveles RGB de 8 bits por canal en hexadecimal.Cuando lo hayas escrito, limpia la pantalla con clear.
-
@cobito funciona perfectamente, muchas gracias.
Con toda la información que he ido analizando estos días, y con las aportaciones que me han hecho también en el foro de exDebian ya puedo personalizarlo como quería.
Lo único que falta es que los cambios realizados en el color sean permanentes, porque cada vez que reinicio tengo que meter de nuevo el código.
-
Solucionado.
Explicación.
De todo esto:
if [ "$TERM" = "linux" ]; then
echo -en "\e]P0232323" #black -> this is the background color as well.
echo -en "\e]P1803232" #darkred
echo -en "\e]P25b762f" #darkgreen
echo -en "\e]P3aa9943" #brown
echo -en "\e]P4324c80" #darkblue
echo -en "\e]P5706c9a" #darkmagenta
echo -en "\e]P692b19e" #darkcyan
echo -en "\e]P7e5e5e5" #lightgray
echo -en "\e]P8222222" #darkgray
echo -en "\e]P9982b2b" #red
echo -en "\e]PA89b83f" #green
echo -en "\e]PBefef60" #yellow
echo -en "\e]PC2b4f98" #blue
echo -en "\e]PD826ab1" #magenta
echo -en "\e]PEa1cdcd" #cyan
echo -en "\e]PFdedede" #white -> this is the foreground color as well.
clear #repaint the whole background with the new color
fiNos fijamos en "\e]P0 y "\e]P7. Los 6 dígitos siguientes se corresponden con el código de color hexadecimal, donde:
P0 es el color para el background (fondo), que por defecto es el código hexadecimal: 232323 P7 es el color para el foreground (texto), que por defecto es el código hexadecimal: e5e5e5
Cuando indicamos:
setterm --inversescreen on
lo que hacemos es invertir P0 y P7, de modo que el fondo pasa a ser el gris (e5e5e5) y el texto pasa a ser el negro (232323).
Cuando indicamos cualquier otro comando de los que hemos analizado haciendo referencia al blanco, mediante white o los códigos numéricos, lo que hace es llamar a P7, y como es gris, pues nunca muestra el blanco.
De modo que si queremos un fondo blanco con letras negras, buscamos primero en código hexadecimal el tipo de blanco y de negro que queremos. Para ello estos recursos son de utilidad:
https://es.wikipedia.org/wiki/Colores_web https://www.w3schools.com/colors/colors_hexadecimal.asp
Atención: es importante hacer los cambios de color en un orden en que el contraste del fondo y el texto sea legible, o directamente hacer el cambio de P0 y P7 a la vez.
Como ejemplo utilizaré para P0 el blanco: FFFFFF, y para P7 el negro: 232323. El código hexadecimal puede estar escrito en minúscula y/o mayúscula.
echo -en "\e]P0FFFFFF" echo -en "\e]P7232323"
y si no cambia de inmediato ejecutamos:
clear
Funciona correctamente en Debian 9 y en CentOS 7.
Actualización:
Si queremos que los cambios de color estén por defecto al reiniciar, seguiremos los siguientes pasos:
Ejecutamos
ls -a
Nos mostrará entre otros archivos, el .bashrc y el .bash_profile (este último en Debian 9 yo no lo tenía)
Ahora editamos o creamos el .bash_profile
Para editarlo:
nano ~/.bash_profile
Para crearlo:
nano .bash_profile
¿Y qué escribimos dentro?, pues depende de cuanto queramos personalizar el bash, podemos desde introducir todo el código que he citado arriba (que afecta desde P0 hasta PF), o para el ejemplo que he indicado en esta solución podemos escribir solo
echo -en "\e]P0FFFFFF"
echo -en "\e]P7232323"
clearGuardamos el archivo con Ctrl+O, aceptamos y Ctrl+X para salir de nano. Reiniciamos la máquina y listo.
A mi me funciona sin darle permisos de ejecución: chmod +x \.bash_profile
Si posteriormente queremos editar los colores de P0, P7 u otras P, editamos el archivo .bash_profile
Gracias a todos por vuestras aportaciones (@cobito y compañeros de exDebian).
Saludos
-
Gracias por la apotación @bienve.
Para iniciar comandos al arranque de una sesión, puedes intentar editando el archivo .bash_profile que encontrarás en tu carpeta personal. Ahí sólo tienes que incluir los comandos que quieras ejecutar.
-
@cobito gracias de nuevo, pero no tengo el archivo .bash_profile, solo el .bashrc, el cual intenté modificarlo con el siguiente código antes de que me indicaras tu solución. Pero no funcionó.
if [ "$TERM" = "linux" ]; then
echo -en "\e]P0232323" #black -> this is the background color as well.
echo -en "\e]P1803232" #darkred
echo -en "\e]P25b762f" #darkgreen
echo -en "\e]P3aa9943" #brown
echo -en "\e]P4324c80" #darkblue
echo -en "\e]P5706c9a" #darkmagenta
echo -en "\e]P692b19e" #darkcyan
echo -en "\e]P7e5e5e5" #lightgray
echo -en "\e]P8222222" #darkgray
echo -en "\e]P9982b2b" #red
echo -en "\e]PA89b83f" #green
echo -en "\e]PBefef60" #yellow
echo -en "\e]PC2b4f98" #blue
echo -en "\e]PD826ab1" #magenta
echo -en "\e]PEa1cdcd" #cyan
echo -en "\e]PFdedede" #white -> this is the foreground color as well.
clear #repaint the whole background with the new color
fiAhora estoy intentando con crontab lograr un script que me haga el cambio de color en el fondo y la letra en cada reinicio.
-
@bienve El archivo .bash_profile lo puedes crear si no existe (dale permisos de ejecución). Si has usado ese script tal cual, deberás modificarlo para que aparezca el color que quieres. Es más, yo lo dejaría en su mínima expresión porque al no usar entorno gráfico, es algo que vas a querer ejecutar siempre y así evitas posibles problemas por variables de entorno incorrectas:
echo -en "\e]P0ffffff" clear
-
Gracias @cobito, funciona perfectamente.