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.