Script per visualizzare tutti i colori dei terminali


74

Attraverso Internet ho visto molte persone con script che stampavano un sacco di cose in tutti i colori definiti ~/.Xdefaults. Tuttavia, quando provo a usarli, ottengo sempre error: Bad Substitution. Qualcuno ha una sceneggiatura funzionante che fa la stessa cosa?

Dovrebbe finire per assomigliare a questo: inserisci qui la descrizione dell'immagine


1
Forse è più facile se pubblichi lo script che stai utilizzando e come e da dove lo stai invocando.
Luri,

1
Puoi trovare una raccolta di sceneggiature per questo in ArchWiki .
aloisdg

1
Ho confezionato alcuni script per la stampa a colori e li ho inseriti qui , completi di esempi, grazie e preparazione dell'installazione.
pvinis,

1
@pvinis grazie! Ho passato troppo tempo a cercare quello esatto mostrato nella schermata di OP.
verboze

1
FWIW, sembra che questa sia la provenienza dell'immagine: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . Il post include la combinazione di colori utilizzata e il post di apertura nel thread cita il codice sorgente utilizzato per generare l'immagine.
mwfearnley,

Risposte:


74

Ecco la mia soluzione 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 ""

One-liner:

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 ""

Ecco un'immagine in Cygwin:

Schermata di Cygwin


1
Cordiali saluti, {30..37}è equivalente a `seq 30 37`in bash ed è più veloce.
Barry Kelly,

1
@BarryKelly: buon consiglio, grazie. appena testato e come hai notato: è davvero molto più veloce !!! :-) quindi ecco il nuovo: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

Funzionerà su un Mac?
kyo,

@ihue Vedere se questo risponde alla tua domanda: Trucchi semplici per migliorare l'aspetto terminale in Mac OS X . Per maggiori dettagli, controlla AskDifferent.com
wjandrea,

Il codice di esempio non ha funzionato su MacOS ma la risposta di Python ha funzionato.
sorin,

40

Puoi anche usare il colortest Installa colortestpacchetto.

  1. Installalo con questo comando:

    sudo apt-get install colortest
  2. Fornisce diversi comandi che è possibile utilizzare, a seconda di quanti colori si desidera:

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

Esempio di output da colortest-16b:

inserisci qui la descrizione dell'immagine


33

Ecco la mia versione:

#!/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")

Questo stampa tutto . Se vuoi una bella tabella (che mostra solo lo stile (0) e (1), normale e grassetto), puoi usare l' argomento -to --terse:

Lo stile 'blink' (5) non funziona con gnome-terminal. ;-)


Se questo non funziona per te, c'è qualcos'altro che non va. Fateci sapere dopo averlo testato.


Il mio colore di richiesta è definito in questo modo: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"perché il bianco opaco ( 0;37;40) è più grigio del bianco e il bianco brillante ( 1;37;40) è in grassetto? Vorrei impostare il carattere del terminale su bianco-nero-luminoso, non in grassetto. Quando eseguo il tuo script, 1;37;40sembra perfettamente a posto dopo la prima riga : 5img.com/img13/740/24screenshot.png Quindi, la mia linea PS1 è nel colore del testo 0;30;40; Mi piacerebbe nel colore di 0;30;41.
Appas

Qualcun altro trova questo magenta particolarmente brutto? Sembra fango.
Ether,

Sei un dio tra gli uomini. La migliore soluzione multipiattaforma. Grazie
Andre Terra,

25

Un semplice one-liner che dovrebbe funzionare per la maggior parte delle persone.

msgcat --color=test

Deadsimple. È possibile ottenere solo il colore di sfondo predefinito?
vrcmr,

msgcat - aiuto non spiega cosa hai fatto ... È un uovo di Pasqua?
vrcmr,

@vrcmr Mi sono imbattuto in questo one-liner in un blog da qualche parte, qualche tempo fa e sfortunatamente non ho trovato alcuna menzione --color=testnella pagina man di msgcat. Lo considero un uovo di Pasqua non configurabile.
JacK Trocinsk,

Per chiunque sia interessato, --color=testè menzionato nella sezione 9.11.2 La variabile d'ambiente 'TERM' sottoinfo msgcat
Gerrit0

7

ho fatto un piccolo copione per quello :)

gli passi un numero ne sputa nle linee colorate insieme all'indice ansi di ogni colore (puoi usarlo in $(tput setaf <ansi-index>)).

ecco uno screenshot dell'output (parziale):

ansi-colori

ho anche preso questo , che ho biforcato (e leggermente modificato) da 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"

... che, nel mio tema attuale, mostra:

mette fuori terminale (sono i colori)!


Funzionerà su Mac?
kyo,

Questi sono gli unici 7 colori che possiamo avere ???
kyo,

@ihue - certo che no, ho realizzato una sceneggiatura per quello .. dai un'occhiata . puoi passare un numero n(ad esempio 256) e sputerà i ncolori supportati dal tuo terminale.
Eliran Malka,

La tua sceneggiatura è fantastica, ma #!/usr/bin/env shnon è una buona idea. Non funziona con la shell predefinita di Ubuntu, che è dash. Ho dovuto cambiarlo in bash.
Teresa e Junior,

5

Recentemente ho voluto trovare quella sceneggiatura che molte persone si riferiscono a me stesso. Viene dal tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . La sceneggiatura è stata scritta da Daniel Crisman.

Emette esattamente lo stesso della foto dalla domanda. La sceneggiatura stessa:

#!/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


1

Questa è una versione modificata dello script TLDP qui . Mostra i colori standard e i colori vivaci (codici 90-97 e 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

Esempio di output:

screenshot di gnome-terminal


0

Questa domanda è in realtà un risultato eccezionale quando cerco come visualizzare i codici colore in un terminale. Quindi volevo rendere giustizia e dare ciò che l'OP stava esattamente cercando. Ricordo che lo screenshot è in qualche modo familiare. All'inizio, ho pensato che fosse di Gogh, tuttavia è un po 'diverso. Ho quindi realizzato che è esattamente lo stesso script utilizzato nei colori iTerm2 .

La fortuna, hanno aggiunto un commento su dove originale è venuto da

Sto postando lo script per riferimento, tratto da iTerm2 con crediti originali:

#!/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

Ecco lo script in azione:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.