Script pour afficher toutes les couleurs du terminal

74

Sur Internet, j'ai vu beaucoup de gens avec des scripts qui impriment un tas de choses dans toutes les couleurs définies dans ~/.Xdefaults. Cependant, lorsque j'essaie de les utiliser, je les ai toujours error: Bad Substitution. Est-ce que quelqu'un a un script de travail qui fait la même chose?

Cela devrait ressembler à quelque chose comme ça: entrez la description de l'image ici

Kironide
la source
1
C'est peut-être plus facile si vous postez le script que vous utilisez, et comment et d'où vous l'invoquez.
luri
1
Vous pouvez trouver une collection de scripts pour cela dans ArchWiki .
aloisdg dit: Réintégrer Monica le
1
J'ai emballé quelques scripts d'impression couleur, et les ai mis ici , avec des exemples, des remerciements et une installation d'infusion.
pvinis
1
@pvinis merci! J'ai passé beaucoup trop de temps à essayer de trouver celui qui est affiché à l'écran de OP.
Verboze
1
FWIW, cela semble être la source de l'image: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . La publication inclut la palette de couleurs utilisée et la publication initiale dans le fil de discussion cite le code source utilisé pour générer l'image.
mwfearnley

Réponses:

74

Voici ma solution avec Bash uniquement:

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

Bon mot:

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

Voici une image dans Cygwin:

Cygwin capture d'écran

oktay
la source
1
FYI, {30..37}est équivalent à `seq 30 37`bash et est plus rapide.
Barry Kelly
1
@ BarryKelly: bon conseil, merci. juste testé et comme vous l'avez noté: c'est vraiment beaucoup plus rapide !!! :-) alors voici le nouveau: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 "";
ok
Cela fonctionnera-t-il sur un Mac?
Kyo
@ihue Voyez si cela répond à votre question: trucs simples pour améliorer l'apparence Terminal sous Mac OS X . Pour plus de détails, consultez AskDifferent.com
mercredi
Le code exemple ne fonctionnait pas sous MacOS, mais la réponse en python fonctionnait.
sorin
40

Vous pouvez également utiliser le colortest Installer le plus cherpackage.

  1. Installez-le avec cette commande:

    sudo apt-get install colortest
  2. Il fournit plusieurs commandes que vous pouvez utiliser, en fonction du nombre de couleurs que vous souhaitez:

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

Exemple de sortie de colortest-16b:

entrez la description de l'image ici

kiri
la source
33

Voici ma version:

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

Cela imprime tout . Si vous voulez une belle table (qui ne montre que les styles (0) et (1), normal et gras), vous pouvez utiliser l' argument -tou --terse:

Le style 'clignotement' (5) ne fonctionne pas avec gnome-terminal. ;-)


Si cela ne fonctionne pas pour vous, il y a autre chose qui ne va pas. S'il vous plaît laissez-nous savoir une fois que vous avez testé.

Stefano Palazzo
la source
Ma couleur d'invite est définie comme suit: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"pourquoi le blanc terne ( 0;37;40) est-il plus gris que le blanc et le blanc éclatant ( 1;37;40) en gras? J'aimerais définir la police du terminal sur blanc brillant sur noir, sans gras. Lorsque je lance votre script, la première ligne1;37;40 est parfaitement correcte : 5img.com/img13/740/24screenshot.png La ligne PS1 est donc dans la couleur du texte ; Je le voudrais dans la couleur de . 0;30;400;30;41
appas
Quelqu'un d'autre trouve-t-il ce magenta particulièrement laid? Cela ressemble à de la boue.
Ether
Tu es un dieu parmi les hommes. Meilleure solution multiplateforme. Merci
Andre Terra
25

Une ligne simple qui devrait fonctionner pour la plupart des gens.

msgcat --color=test
JacK TrocinskI
la source
Deadsimple. Est-il possible d'obtenir uniquement la couleur de fond par défaut?
vrcmr
msgcat --help n'explique pas ce que vous avez fait ... Est-ce un oeuf de Pâques?
vrcmr
@vrcmr Je suis tombé sur ce one-line dans un blog quelque part, il y a quelque temps, et malheureusement, je n'ai trouvé aucune mention de --color=testdans la page de manuel de msgcat. Je considère que c'est un oeuf de Pâques non configurable.
JacK TrocinskI
Pour toute autre personne intéressée, --color=testest mentionnée dans la section 9.11.2 La variable d'environnement 'TERM' sousinfo msgcat
Gerrit0
7

J'ai fait un petit script pour ça :)

vous lui passez un numéro net il crache ndes lignes de couleur avec l'index ansi de chaque couleur (vous pouvez l'utiliser dedans $(tput setaf <ansi-index>)).

voici une capture d'écran de la sortie (partielle):

ansi-couleurs

J'ai aussi eu celui-ci , que j'ai ajouté (et légèrement modifié) à partir de 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"

… Qui, dans mon thème actuel, montre:

le terminal éteint (ses couleurs)!

Eliran Malka
la source
Cela fonctionnera-t-il sur le Mac?
Kyo
Est-ce que ce sont les seules 7 couleurs que nous pouvons avoir ???
Kyo
@ Hue - bien sûr que non, j'ai fait un script pour ça .. check it out . vous pouvez lui donner un numéro n(par exemple 256) et il crachera les ncouleurs supportées par votre terminal.
Eliran Malka
Votre script est cool, mais #!/usr/bin/env shn'est pas une bonne idée. Cela ne fonctionne pas avec le shell par défaut d'Ubuntu, qui est dash. Je devais le changer en bash.
Teresa e Junior
5

Voulu récemment trouver ce script que beaucoup de gens se réfèrent à moi-même. Il est tiré du tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Le script est écrit par Daniel Crisman.

La sortie est exactement la même que sur la photo de la question. Le script lui-même:

#!/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
la source
1

Ceci est une version modifiée du script TLDP ici . Il affiche les couleurs standard et les couleurs vives (codes 90-97 et 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

Exemple de sortie:

capture d'écran gnome-terminal

Wjandrea
la source
0

Cette question est en fait un excellent résultat lorsque je cherche à savoir comment afficher les codes de couleur dans un terminal. Je voulais donc rendre justice et donner ce que le PO cherchait exactement. Je me souviens de la capture d'écran est un peu familier. Au début, je pensais que c'était de Gogh, mais c'est un peu différent. J'ai alors réalisé que c'était exactement le même script utilisé dans les couleurs iTerm2 .

Assez chanceux, ils ont ajouté un commentaire sur où il est originaire de

Je poste le script pour référence, tiré de iTerm2 avec les crédits originaux:

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

Voici le script en action:

entrez la description de l'image ici

chriz
la source