Equivalente "color a" y "color b" de Windows en la terminal bash

Equivalente "color a" y "color b" de Windows en la terminal bash

En el sistema operativo Windows, puedo escribir simplemente color ao color bo color cetc. para cambiar temporalmente el color de fuente en el terminal.

¿Existe un comando para hacer esto en la terminal bash?

No quiero hacer cambios permanentes, solo con la sesión abierta es suficiente.

Respuesta1

Te refieres a undominioque espera valores 0-f (es decir, 0 a 15 decimales). El comando análogo usaríatput:

tput setaf 10

("a" es hexdecimal para 10), para elprimer planocolor y

tput setab 10

Para elfondocolor. esos estan separadosinformación terminológicacapacidades.

Ese ejemplo supone que la descripción de su terminal tiene al menos 16 colores. Si tiene sólo 8, tputno lo notará, pero el resultado será insatisfactorio. Puedes ver esto por

tput colors

De forma predeterminada, tpututiliza el valor actual de $TERMpara seleccionar una descripción de terminal. Puede anular esto con la -Topción. Por ejemplo, si está utilizandoxterm(a diferencia de otros terminales que se configuran TERMcomo "xterm"), puede usar la xterm-16colordescripción del terminal como se muestra en esta captura de pantalla:

ingrese la descripción de la imagen aquí

(Probablemente puedas ver que la tputlínea 15 no tuvo ningún efecto útil, lo cual se espera ya que10está fuera del rango de 8 colores).

La descripción del terminal, ya seaxtermoxterm-16color(oxterm-256color) indica tputcómo crear una secuencia de escape que se pueda escribir en la terminal. Su indicador de bash también puede enviar secuencias de escape, configurando o restableciendo colores. Si llamó tputy repitió texto dentro de un script de shell, es posible que vea el texto en color, mientras que es posible que los mismos comandos (separados por indicaciones de bash) no se comporten de la misma manera. Además, algunos programas (como ls) configuran/restablecen colores. Sólo hay un estado de color de terminal para compartir con estas diferentes aplicaciones; Los terminales no cambian automáticamente entre ellos.

Probar un script de shell es más predecible que confiar en los detalles del indicador de shell. Aquí hay un ejemplo

#!/bin/sh
case $TERM in
xterm*)
        TERM=xterm-256color
        ;;
linux*)
        TERM=linux-16color
        ;;
esac
export TERM
for p in $(seq 0 15)
do
        tput setab $p
        for q in $(seq 0 15)
        do
                tput setaf $q
                printf '%x%x' $p $q
        done
        tput sgr0
        printf '\n'
done

y una captura de pantalla en xterm:

ingrese la descripción de la imagen aquí

información relacionada