Script para exibir todas as cores do terminal


74

Em toda a Internet, vi muitas pessoas com scripts que imprimem várias coisas em todas as cores definidas ~/.Xdefaults. No entanto, quando tento usá-los, sempre entendo error: Bad Substitution. Alguém tem um script de trabalho que faz a mesma coisa?

Deve acabar parecendo algo assim: insira a descrição da imagem aqui


11
Talvez seja mais fácil se você postar o script que está usando e como e de onde o está invocando.
luri

11
Você pode encontrar uma coleção de scripts para isso no ArchWiki .
aloisdg

11
Empacotei alguns scripts de impressão em cores e os coloquei aqui , completos com exemplos, agradecimentos e instalação de preparação.
Pvinis

11
@pvinis thanks! Passei muito tempo tentando encontrar o exato mostrado na tela do OP.
Verboze

11
FWIW, parece que é de onde veio a imagem: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . A postagem inclui o esquema de cores usado e a postagem de abertura no segmento cita o código-fonte usado para gerar a imagem.
precisa saber é o seguinte

Respostas:


74

Aqui está minha solução apenas com o 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 ""

Uma linha:

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

Aqui está uma foto em Cygwin:

Captura de tela Cygwin


11
Para sua informação, {30..37}é equivalente ao `seq 30 37`bash e é mais rápido.
Barry Kelly

11
@ BarryKelly: boa dica, obrigado. acabou de testar e como você observou: é realmente muito mais rápido !!! :-) então aqui está o novo: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 17/12/2015

Isso funcionará em um Mac?
kyo

@ihue Veja se isso responde sua pergunta: Truques simples para melhorar a aparência Terminal no Mac OS X . Para mais detalhes, confira AskDifferent.com
wjandrea

O código de exemplo não funcionou no MacOS, mas a resposta python funcionou.
sorin

40

Você também pode usar o colortest Instalar colortestpacote.

  1. Instale-o com este comando:

    sudo apt-get install colortest
  2. Ele fornece vários comandos que você pode usar, dependendo de quantas cores você deseja:

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

Exemplo de saída de colortest-16b:

insira a descrição da imagem aqui


33

Aqui está a minha versão:

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

Isso imprime tudo . Se você deseja uma boa tabela (que mostre apenas os estilos (0) e (1), normal e negrito), use o argumento -tou --terse:

O estilo 'piscar' (5) não funciona com o terminal gnome. ;-)


Se isso não funcionar para você, há algo mais errado. Informe-nos depois de testá-lo.


Minha cor de prompt é definida assim: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Por que o branco opaco ( 0;37;40) é mais cinza do que o branco e o branco brilhante ( 1;37;40) está em negrito? Eu gostaria de definir a fonte do terminal como branco brilhante no preto, sem negrito. Quando executo seu script, 1;37;40parece perfeitamente correto após a primeira linha : 5img.com/img13/740/24screenshot.png Então, minha linha PS1 está na cor do texto 0;30;40; Eu gostaria na cor de 0;30;41.
appas

Alguém mais acha essa magenta particularmente feia? Parece lama.
Éter

Você é um deus entre os homens. Melhor solução multiplataforma. Obrigado
Andre Terra

25

Uma linha simples que deve funcionar para a maioria das pessoas.

msgcat --color=test

Deadsimple. É possível obter apenas a cor de fundo padrão?
vrcmr

msgcat --help não explica o que você fez ... É um ovo de páscoa?
vrcmr

@vrcmr Eu me deparei com esse one-liner em um blog em algum lugar, há algum tempo atrás e infelizmente não consegui encontrar nenhuma menção --color=testna página de manual do msgcat também. Considero que é um ovo de páscoa não configurável.
JacK TrocinskI

Para qualquer pessoa interessada, --color=testé mencionada na seção 9.11.2 A variável de ambiente 'TERM' eminfo msgcat
Gerrit0

7

eu fiz um pequeno script pra isso :)

você passa um número para nele e cospe nlinhas coloridas junto com o índice ansi de cada cor (você pode usá-lo $(tput setaf <ansi-index>)).

Aqui está uma captura de tela da saída (parcial):

ansi-colors

Eu também peguei este , que eu bifurquei (e levemente modificado) da décima segunda :

#!/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, no meu tema atual, mostra:

terminal coloca para fora (é cores)!


Isso funcionará no Mac?
kyo

Essas são as únicas 7 cores que podemos ter ???
kyo

@ihue - é claro que não, eu fiz um script para isso ... confira . você pode passar um número n(por exemplo 256) e ele cuspirá as ncores que o seu terminal suporta.
Eliran Malka

Seu script é legal, mas #!/usr/bin/env shnão é uma boa ideia. Não funciona com o shell padrão do Ubuntu, que é o dash. Eu tive que mudar para bash.
Teresa e Junior

5

Recentemente, queria encontrar o script que muitas pessoas estão me referindo. É do HOWTO do prompt do tashp.org Bash - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . O script é de autoria de Daniel Crisman.

Ele produz exatamente o mesmo que na foto da pergunta. O próprio script:

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

Esta é uma versão modificada do script TLDP aqui . Mostra cores padrão e cores vivas (códigos 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

Exemplo de saída:

captura de tela do gnome-terminal


0

Esta pergunta é realmente um resultado importante quando procuro como exibir códigos de cores em um terminal. Então, eu queria dar justiça e dar exatamente o que o OP estava procurando. Lembro que a captura de tela é um pouco familiar. No começo, eu pensei que era de Gogh, mas é um pouco diferente. Então percebi que é exatamente o mesmo script usado nas cores do iTerm2 .

Sorte, eles adicionaram um comentário sobre onde ele veio originalmente de

Estou postando o script para referência, retirado do iTerm2 com créditos originais:

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

Aqui está o script em ação:

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.