Script para mostrar todos los colores del terminal

74

A través de Internet, he visto a muchas personas con scripts que imprimen un montón de cosas en todos los colores definidos ~/.Xdefaults. Sin embargo, cuando trato de usarlos, siempre consigo error: Bad Substitution. ¿Alguien tiene un script de trabajo que haga lo mismo?

Debería terminar luciendo así: ingrese la descripción de la imagen aquí

Kironida
fuente
1
Tal vez sea más fácil si publica el script que está utilizando, y cómo y desde dónde lo invoca.
luri
1
Puede encontrar una colección de guiones para esto en ArchWiki .
aloisdg
1
Empaqueté algunos scripts de impresión en color y los puse aquí , con ejemplos, gracias e instalación de brew.
pvinis
1
@pvinis gracias! Pasé demasiado tiempo tratando de encontrar el que se muestra exactamente en la pantalla de OP.
verboze el
1
FWIW, este parece ser el origen de la imagen: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . La publicación incluye el esquema de color utilizado, y la publicación de apertura en el hilo cita el código fuente utilizado para generar la imagen.
mwfearnley

Respuestas:

74

Aquí está mi solución solo con Bash:

for x in {0..8}; do 
    for i in {30..37}; do 
        for a in {40..47}; do 
            echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "
        done
        echo
    done
done
echo ""

Un trazador de líneas:

for x in {0..8}; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo ""

Aquí hay una foto en Cygwin:

Captura de pantalla de Cygwin

oktay
fuente
1
FYI, {30..37}es equivalente a `seq 30 37`en bash y es más rápido.
Barry Kelly
1
@BarryKelly: buen consejo, gracias. Acabo de probar y como notaron: ¡es realmente mucho más rápido! :-) así que aquí está el nuevo:for x in 0 1 4 5 7 8; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo "";
oktay
¿Funcionará esto en una Mac?
kyo
@ihue ver si esto responde a su pregunta: Trucos sencillos para mejorar la apariencia Terminal en Mac OS X . Para más detalles, consulte AskDifferent.com
wjandrea
El código de muestra no funcionó en MacOS, pero la respuesta de Python funcionó.
sorin
40

También puedes usar el colortest Instalar colortestpaquete.

  1. Instálalo con este comando:

    sudo apt-get install colortest
  2. Proporciona varios comandos que puede usar, dependiendo de cuántos colores desee:

    colortest-16   colortest-16b  colortest-256  colortest-8

Ejemplo de salida de colortest-16b:

ingrese la descripción de la imagen aquí

kiri
fuente
33

Aquí está mi versión:

#!/usr/bin/env python
import sys
terse = "-t" in sys.argv[1:] or "--terse" in sys.argv[1:]
write = sys.stdout.write
for i in range(2 if terse else 10):
    for j in range(30, 38):
        for k in range(40, 48):
            if terse:
                write("\33[%d;%d;%dm%d;%d;%d\33[m " % (i, j, k, i, j, k))
            else:
                write("%d;%d;%d: \33[%d;%d;%dm Hello, World! \33[m \n" %
                      (i, j, k, i, j, k,))
        write("\n")

Esto imprime todo . Si desea una buena tabla (que solo muestra el estilo (0) y (1), normal y negrita), puede usar el argumento -to --terse:

El estilo 'parpadeo' (5) no funciona con gnome-terminal. ;-)


Si esto no funciona para usted, hay algo más mal. Por favor, háganos saber una vez que lo haya probado.

Stefano Palazzo
fuente
Mi color de aviso se define así: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"¿Por qué es que el blanco opaco ( 0;37;40) es más gris que el blanco y el blanco brillante ( 1;37;40) está en negrita? Me gustaría configurar la fuente del terminal en blanco brillante sobre negro, no en negrita. Cuando ejecuto su script, se 1;37;40ve perfectamente bien después de la primera línea : 5img.com/img13/740/24screenshot.png Entonces, mi línea PS1 está en el color del texto 0;30;40; Me gustaría en el color de 0;30;41.
appas el
¿Alguien más encuentra este magenta particularmente feo? Parece barro.
Ether
Eres un dios entre los hombres. La mejor solución multiplataforma. Gracias
Andre Terra
25

Una línea simple que debería funcionar para la mayoría de las personas.

msgcat --color=test
JacK TrocinskI
fuente
Deadsimple ¿Es posible obtener solo el color de fondo predeterminado?
vrcmr
msgcat --help no explica lo que hiciste ... ¿Es un huevo de pascua?
vrcmr
@vrcmr Me topé con esta frase en un blog en algún lugar, hace algún tiempo y desafortunadamente tampoco pude encontrar ninguna mención --color=testen la página de manual de msgcat. Considero que es un huevo de Pascua no configurable.
JacK TrocinskI
Para cualquier otra persona interesada, --color=testse menciona en la sección 9.11.2 La variable de entorno 'TÉRMINO' eninfo msgcat
Gerrit0
7

hice un pequeño guión para eso :)

le pasa un número ny escupe nlíneas de colores junto con el índice ansi de cada color (puede usarlo $(tput setaf <ansi-index>)).

Aquí hay una captura de pantalla de la salida (parcial):

colores ansi

También obtuve este , que bifurqué (y modifiqué ligeramente) del twerth :

#!/usr/bin/env bash

echo -e "\033[0mNC (No color)"
echo -e "\033[1;37mWHITE\t\033[0;30mBLACK"
echo -e "\033[0;34mBLUE\t\033[1;34mLIGHT_BLUE"
echo -e "\033[0;32mGREEN\t\033[1;32mLIGHT_GREEN"
echo -e "\033[0;36mCYAN\t\033[1;36mLIGHT_CYAN"
echo -e "\033[0;31mRED\t\033[1;31mLIGHT_RED"
echo -e "\033[0;35mPURPLE\t\033[1;35mLIGHT_PURPLE"
echo -e "\033[0;33mYELLOW\t\033[1;33mLIGHT_YELLOW"
echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY"

... que, en mi tema actual, muestra:

¡La terminal apaga (son colores)!

Eliran Malka
fuente
¿Funcionará esto en Mac?
kyo
¿Son estos los únicos 7 colores que podemos tener?
kyo
@ihue - por supuesto que no, hice un script para eso ... échale un vistazo . puede pasarle un número n(por ejemplo 256) y escupirá los ncolores que admite su terminal.
Eliran Malka
Tu guión es genial, pero #!/usr/bin/env shno es una buena idea. No funciona con el shell predeterminado de Ubuntu, que es dash. Tuve que cambiarlo a bash.
Teresa e Junior
5

Recientemente quería encontrar ese guión al que muchas personas se refieren. Es del tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . El guión está escrito por Daniel Crisman.

Produce exactamente lo mismo que en la imagen de la pregunta. El guión en sí:

#!/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
Illia
fuente
1

Esta es una versión modificada del script TLDP aquí . Muestra colores estándar y colores vivos (códigos 90-97 y 100-107).

#!/bin/bash
# Show available terminal colours.
# Heavily modified version of the TLDP script here:
# http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html

print_colors(){
  # Print column headers.
  printf "%-4s  " '' ${bgs[@]}
  echo
  # Print rows.
  for bold in ${bolds[@]}; do
    for fg in ${fgs[@]}; do
      # Print row header
      printf "%s;%s  " $bold $fg
      # Print cells.
      for bg in ${bgs[@]}; do
        # Print cell.
        printf "\e[%s;%s;%sm%s\e[0m  " $bold $fg $bg "text"
      done
      echo
    done
  done
}

# Print standard colors.
bolds=( 0 1 )
fgs=( 3{0..7} )
bgs=( 4{0..8} )
print_colors

# Print vivid colors.
bolds=( 0 ) # Bold vivid is the same as bold normal.
fgs=( 9{0..7} )
bgs=( 10{0..8} )
print_colors

Salida de ejemplo:

captura de pantalla de gnome-terminal

wjandrea
fuente
0

Esta pregunta es en realidad un resultado superior cuando busco cómo mostrar códigos de color en un terminal. Así que quería hacer justicia y dar lo que el OP estaba buscando exactamente. Recuerdo que la captura de pantalla es algo familiar. Al principio, pensé que era de Gogh, sin embargo, es un poco diferente. Luego me di cuenta de que es exactamente el mismo script que se usa en los colores iTerm2 .

Suerte, agregaron un comentario en donde vino originalmente de

Estoy publicando el script para referencia, tomado de iTerm2 con créditos originales:

#!/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).
#
#   Copied from http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html

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

Aquí está el guión en acción:

ingrese la descripción de la imagen aquí

chriz
fuente