¿Cómo crear un testcolor.sh como la siguiente captura de pantalla?


Respuestas:


25

instale el paquete llamado como:

colortest

y disfruta coloreando ejecutando los binarios como, colortest-8 colortest-16 colortest-16betc.


3
Esta respuesta probablemente se refiere al paquete en una distribución específica de Linux. ¿Dónde están las fuentes disponibles para los otros sabores de Unix?
raimue

en debian / ubuntu: apt-get install colortest
r03

También está colortest-256incluido.
shrx

¿Hay una versión de esto para macOS? No tenemos apt-get here 🙂
Ben CR Leggiero

17

La secuencia de escape ESC [ SPEC1 ; … mcambia los atributos de texto (color, negrita, etc.) de los caracteres escritos posteriormente. Esta es una de las secuencias de escape de terminal ANSI . Cada uno SPECpuede ser uno de los siguientes (la lista no es exhaustiva):

  • 0 para cambiar a los colores predeterminados.
  • 1 para activar la negrita.
  • 30 a 37 para establecer el color de primer plano (negro, rojo, verde, amarillo, azul, magenta, cian, gris).
  • 40 a 47 para establecer el color de fondo (misma lista).

Aquí hay un fragmento de shell que genera casi lo que publicaste.

printf "          "
for b in 0 1 2 3 4 5 6 7; do printf "  4${b}m "; done
echo
for f in "" 30 31 32 33 34 35 36 37; do
    for s in "" "1;"; do
        printf "%4sm" "${s}${f}"
        printf " \033[%sm%s\033[0m" "$s$f" "gYw "
        for b in 0 1 2 3 4 5 6 7; do
            printf " \033[4%s;%sm%s\033[0m" "$b" "$s$f" " gYw "
        done
        echo
     done
done

colortest es bueno, pero esta respuesta da exactamente lo que pidió el autor de la pregunta original. También es agradable ver los códigos de colores en la pantalla. ahorra pensar en ello.
pdwalker

8

Hay algunas variaciones, bien seis para ser precisos, que figuran en la página Arch Wiki Xresouces .

Además del que se usa en la captura de pantalla, hay algunos más ingeniosos, mi favorito es el de los foros de Crunchbang y presenta invasores espaciales:

#!/bin/bash
#
# ANSI color scheme script featuring Space Invaders
#
# Original: http://crunchbanglinux.org/forums/post/126921/#p126921
# Modified by lolilolicon
#

f=3 b=4
for j in f b; do
  for i in {0..7}; do
    printf -v $j$i %b "\e[${!j}${i}m"
  done
done
bld=$'\e[1m'
rst=$'\e[0m'

cat << EOF

 $f1  ▀▄   ▄▀     $f2 ▄▄▄████▄▄▄    $f3  ▄██▄     $f4  ▀▄   ▄▀     $f5 ▄▄▄████▄▄▄    $f6  ▄██▄  $rst
 $f1 ▄█▀███▀█▄    $f2███▀▀██▀▀███   $f3▄█▀██▀█▄   $f4 ▄█▀███▀█▄    $f5███▀▀██▀▀███   $f6▄█▀██▀█▄$rst
 $f1█▀███████▀█   $f2▀▀███▀▀███▀▀   $f3▀█▀██▀█▀   $f4█▀███████▀█   $f5▀▀███▀▀███▀▀   $f6▀█▀██▀█▀$rst
 $f1 ▀▄▄ ▄▄▀    $f2 ▀█▄ ▀▀ ▄█▀    $f3▀▄    ▄▀   $f4 ▀▄▄ ▄▄▀    $f5 ▀█▄ ▀▀ ▄█▀    $f6▀▄    ▄▀$rst

 $bld$f1 ▀▄   ▄▀    $f2 ▄▄▄████▄▄▄    $f3  ▄██▄     $f4 ▀▄   ▄▀    $f5 ▄▄▄████▄▄▄    $f6  ▄██▄  $rst
 $bld$f1█▄█▀███▀█▄█   $f2███▀▀██▀▀███   $f3▄█▀██▀█▄   $f4█▄█▀███▀█▄█   $f5███▀▀██▀▀███   $f6▄█▀██▀█▄$rst
 $bld$f1▀█████████▀   $f2▀▀▀██▀▀██▀▀▀   $f3▀▀█▀▀█▀▀   $f4▀█████████▀   $f5▀▀▀██▀▀██▀▀▀   $f6▀▀█▀▀█▀▀$rst
 $bld$f1 ▄▀     ▀▄    $f2▄▄▀▀ ▀▀ ▀▀▄▄   $f3▄▀▄▀▀▄▀▄   $f4 ▄▀     ▀▄    $f5▄▄▀▀ ▀▀ ▀▀▄▄   $f6▄▀▄▀▀▄▀▄$rst


                                     $f7$rst

                                   $f7$rst

                              $f7    ▄█▄    $rst
                              $f7▄█████████▄$rst
                              $f7▀▀▀▀▀▀▀▀▀▀▀$rst

EOF

espacial


Me gusta esta figura, pero SHW proporcionó el guión exacto, elegiré su respuesta ;-P
daisy

1
Es justo: la página wiki a la que enlacé también incluye el script en su captura de pantalla; Creo que esta es una forma más interesante de mostrar los colores X :)
jasonwryan

8

Si bien no es tan difícil de replicar, su captura de pantalla probablemente proviene de tldp.org ; la parte inferior de esa página contiene un script que muestra la tabla que ve:

Para ayudarme a recordar qué colores están disponibles, escribí un script que mostraba todos los colores en la pantalla. Daniel Crisman ha proporcionado una versión mucho más agradable que incluyo a continuación:

#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

Hay una tabla similar disponible como demostración en la biblioteca F-ANSI :

Tabla de colores ANSI generada por F-ANSI


2
Esta es la respuesta exacta a la pregunta.
wisbucky

6
echo -e "\n\033[4;31mLight Colors\033[0m \t\t\t  \033[1;4;31mDark Colors\033[0m"
echo -e " \e[0;30;47m Black     \e[0m   0;30m \t\t \e[1;30;40m Dark Gray   \e[0m  1;30m"
echo -e " \e[0;31;47m Red       \e[0m   0;31m \t\t \e[1;31;40m Dark Red    \e[0m  1;31m"
echo -e " \e[0;32;47m Green     \e[0m   0;32m \t\t \e[1;32;40m Dark Green  \e[0m  1;32m"
echo -e " \e[0;33;47m Brown     \e[0m   0;33m \t\t \e[1;33;40m Yellow      \e[0m  1;33m"
echo -e " \e[0;34;47m Blue      \e[0m   0;34m \t\t \e[1;34;40m Dark Blue   \e[0m  1;34m"
echo -e " \e[0;35;47m Magenta   \e[0m   0;35m \t\t \e[1;35;40m Dark Magenta\e[0m  1;35m"
echo -e " \e[0;36;47m Cyan      \e[0m   0;36m \t\t \e[1;36;40m Dark Cyan   \e[0m  1;36m"
echo -e " \e[0;37;47m Light Gray\e[0m   0;37m \t\t \e[1;37;40m White       \e[0m  1;37m"

y así.



0

No estoy seguro de si esta es la respuesta exacta, pero en http://linuxcommand.org/lc3_adv_tput.php encontré varias funciones que prueban tput para colorear BASH.

#!/bin/bash

echo "tput colors test"
echo "================"
echo
echo "tput setaf/setab [0-9] ... tput sgr0"
echo

for fg_color in {0..7}; do
  set_foreground=$(tput setaf $fg_color)
  for bg_color in {0..7}; do
    set_background=$(tput setab $bg_color)
    echo -n $set_background$set_foreground
    printf ' F:%s B:%s ' $fg_color $bg_color
  done
  echo $(tput sgr0)
done

echo
echo "END"
echo
exit
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.