Skrypt do wyświetlania wszystkich kolorów terminali


74

W całym Internecie widziałem wiele osób ze skryptami, które drukują wiele rzeczy we wszystkich zdefiniowanych kolorach ~/.Xdefaults. Jednak kiedy próbuję z nich korzystać, zawsze otrzymuję error: Bad Substitution. Czy ktoś ma działający skrypt, który robi to samo?

Powinno to wyglądać mniej więcej tak: wprowadź opis zdjęcia tutaj


1
Może łatwiej jest opublikować skrypt, którego używasz, oraz sposób i miejsce jego wywoływania.
luri

1
Możesz znaleźć kolekcję skryptów na ten temat w ArchWiki .
aloisdg

1
Spakowałem kilka skryptów do drukowania w kolorze i umieściłem je tutaj , wraz z przykładami, podziękowaniami i instalacją naparu.
pvinis,

1
@pvinis dzięki! Spędziłem zdecydowanie za dużo czasu, starając się znaleźć dokładnie ten pokazany na ekranie OP.
verboze

1
FWIW, wydaje się, że pochodzi z tego obrazu: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . Post zawiera zastosowany schemat kolorów, a post w wątku cytuje kod źródłowy użyty do wygenerowania obrazu.
mwfearnley

Odpowiedzi:


74

Oto moje rozwiązanie tylko z 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 ""

Jednowarstwowy:

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

Oto zdjęcie w Cygwin:

Zrzut ekranu z Cygwinem


1
FYI, {30..37}jest równoważne z `seq 30 37`bash i jest szybsze.
Barry Kelly,

1
@BarryKelly: dobra wskazówka, dzięki. właśnie przetestowałem i jak zauważyłeś: jest naprawdę znacznie szybszy !!! :-) więc tutaj jest nowe: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

Czy to zadziała na komputerze Mac?
kyo

@ihue Zobacz, czy ta odpowiada na pytanie: Proste sztuczki, aby poprawić wygląd terminalu w systemie Mac OS X . Aby uzyskać więcej informacji, sprawdź AskDifferent.com
wjandrea

Przykładowy kod nie działał na MacOS, ale zadziałała odpowiedź pytona.
sorin

40

Możesz także skorzystać z colortest Zainstaluj Colortestpakietu.

  1. Zainstaluj go za pomocą tego polecenia:

    sudo apt-get install colortest
  2. Udostępnia kilka poleceń, których można użyć w zależności od liczby kolorów:

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

Przykładowe dane wyjściowe z colortest-16b:

wprowadź opis zdjęcia tutaj


33

Oto moja wersja:

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

To drukuje wszystko . Jeśli chcesz mieć ładną tabelę (która pokazuje tylko styl (0) i (1), normalną i pogrubioną), możesz użyć argumentu -tlub --terse:

Styl „mrugnięcia” (5) nie działa z terminalem gnome. ;-)


Jeśli to nie zadziała, jest coś jeszcze nie tak. Po przetestowaniu daj nam znać.


Mój szybki kolor jest zdefiniowany następująco: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Dlaczego matowa biel ( 0;37;40) jest bardziej szara niż biała, a jasna biel ( 1;37;40) jest pogrubiona? Chciałbym ustawić czcionkę terminalu na jaskrawo biało-na czarno, nie pogrubioną czcionką. Kiedy uruchamiam skrypt, po pierwszym wierszu1;37;40 wygląda idealnie w porządku : 5img.com/img13/740/24screenshot.png Tak więc moja linia PS1 ma kolor tekstu ; Chciałbym to w kolorze . 0;30;400;30;41
appas

Czy ktokolwiek inny uważa tę magentę za szczególnie brzydką? Wygląda jak błoto.
Ether

Jesteś bogiem wśród ludzi. Najlepsze rozwiązanie dla wielu platform. Dzięki
Andre Terra,

24

Prosty jednowarstwowy, który powinien działać dla większości ludzi.

msgcat --color=test

Deadsimple. Czy można uzyskać tylko domyślny kolor tła?
vrcmr

msgcat - help nie wyjaśnia, co zrobiłeś ... Czy to easter egg?
vrcmr

@vrcmr Natknąłem się gdzieś na jeden-liner na blogu, jakiś czas temu i niestety nie mogłem znaleźć żadnej wzmianki --color=testna stronie podręcznika msgcat. Uważam to za nieskonfigurowalne jajko wielkanocne.
JacK Trocinsk,

Dla wszystkich zainteresowanych --color=testjest wymieniony w sekcji 9.11.2 Zmienna środowiskowa „TERM” podinfo msgcat
Gerrit0

7

stworzyłem do tego mały skrypt :)

przekazujesz mu liczbę ni wypluwa nkolorowe linie wraz z indeksem ansi każdego koloru (możesz go użyć $(tput setaf <ansi-index>)).

oto zrzut ekranu z (częściowego) wyniku:

kolory ansi

dostałem również ten , który rozwidliłem (i nieznacznie zmodyfikowałem) od drugiego :

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

… Który w moim obecnym temacie pokazuje:

terminal gasi (to kolory)!


Czy to zadziała na komputerze Mac?
kyo

Czy to jedyne 7 kolorów, jakie możemy mieć ???
kyo

@ihue - oczywiście, że nie, stworzyłem w tym celu skrypt ... sprawdź to . możesz przekazać mu liczbę n(np. 256), a ona wypluje nkolory obsługiwane przez twój terminal.
Eliran Malka

Twój skrypt jest fajny, ale #!/usr/bin/env shnie jest dobrym pomysłem. Nie działa z domyślną powłoką Ubuntu, którą jest dash. Musiałem zmienić to na bash.
Teresa e Junior

5

Niedawno chciałem znaleźć ten skrypt, do którego odnosi się wiele osób. Pochodzi z tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Autorem skryptu jest Daniel Crisman.

Dane wyjściowe są dokładnie takie same jak na zdjęciu z pytania. Sam skrypt:

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

To jest zmodyfikowana wersja skryptu TLDP tutaj . Pokazuje standardowe kolory i żywe kolory (kody 90-97 i 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

Przykładowe dane wyjściowe:

zrzut ekranu gnome-terminal


0

To pytanie jest rzeczywiście najlepszym wynikiem, gdy szukam sposobu wyświetlania kodów kolorów w terminalu. Chciałem więc oddać sprawiedliwość i dać dokładnie to, czego OP szukał. Pamiętam, że zrzut ekranu jest dość znajomy. Na początku myślałem, że to od Gogha, ale jest trochę inaczej. Potem zdałem sobie sprawę, że dokładnie taki sam skrypt jest używany w kolorach iTerm2 .

Na szczęście dodali komentarz na temat pochodzenia

Zamieszczam skrypt w celach informacyjnych, zaczerpnięty z iTerm2 z oryginalnymi napisami:

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

Oto skrypt w akcji:

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.