Skript zur Anzeige aller Terminalfarben


74

Im gesamten Internet habe ich viele Leute mit Skripten gesehen, die eine Menge Dinge in allen in definierten Farben ausdrucken ~/.Xdefaults. Wenn ich jedoch versuche, diese zu verwenden, bekomme ich immer error: Bad Substitution. Hat jemand ein funktionierendes Skript, das dasselbe macht?

Es sollte ungefähr so ​​aussehen: Bildbeschreibung hier eingeben


1
Vielleicht ist es einfacher, wenn Sie das Skript, das Sie verwenden, veröffentlichen und wie und von wo aus Sie es aufrufen.
luri

1
Eine Sammlung von Skripten dazu finden Sie im ArchWiki .
Aloisdg

1
Ich habe ein paar Farbdruckskripte verpackt und sie hier abgelegt , einschließlich Beispielen, Dankeschöns und Installation.
Pvinis

1
@pvinis danke! Ich habe viel zu viel Zeit damit verbracht, genau das zu finden, was auf dem Bildschirm von OP angezeigt wird.
Verboze

1
FWIW, dies scheint der Ursprung des Bildes zu sein: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . Der Beitrag enthält das verwendete Farbschema, und der Eröffnungsbeitrag im Thread gibt den Quellcode an, mit dem das Bild generiert wurde.
Mwfearnley

Antworten:


74

Hier ist meine Lösung nur mit 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 ""

Einzeiler:

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

Hier ist ein Bild in Cygwin:

Cygwin-Screenshot


1
Zu Ihrer Information, {30..37}entspricht `seq 30 37`in bash und ist schneller.
Barry Kelly

1
@BarryKelly: guter Tipp, danke. gerade getestet und wie du bemerkt hast: es ist wirklich viel schneller !!! :-) hier ist also die neue: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

Funktioniert das auf einem Mac?
Kyo

@ihue Sehen Sie, wenn dies Ihre Frage beantwortet: Einfache Tricks zur Verbesserung der Terminal - Auftritt in Mac OS X . Weitere Informationen finden Sie unter AskDifferent.com
wjandrea

Beispielcode funktionierte unter MacOS nicht, aber die Python-Antwort funktionierte.
Sorin

40

Sie können das colortest Installieren Sie colortestPaket auch verwenden .

  1. Installieren Sie es mit diesem Befehl:

    sudo apt-get install colortest
  2. Es bietet verschiedene Befehle, die Sie je nach Anzahl der gewünschten Farben verwenden können:

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

Beispielausgabe von colortest-16b:

Bildbeschreibung hier eingeben


33

Hier ist meine 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")

Dies druckt alles . Wenn Sie eine schöne Tabelle wollen (die nur die Stile (0) und (1) zeigt, normal und fett), können Sie das Argument -toder verwenden --terse:

Der 'Blink'-Stil (5) funktioniert nicht mit dem Gnome-Terminal. ;-)


Wenn dies bei Ihnen nicht funktioniert, stimmt etwas anderes nicht. Bitte lassen Sie es uns wissen, sobald Sie es getestet haben.


Meine Eingabeaufforderungsfarbe ist wie folgt definiert: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Warum ist das stumpfe Weiß ( 0;37;40) grauer als weiß und das helle Weiß ( 1;37;40) ist fett gedruckt? Ich möchte die Terminalschriftart auf Hellweiß auf Schwarz setzen, nicht auf Fettdruck. Wenn ich dein Skript ausführe, 1;37;40sieht es nach der ersten Zeile perfekt aus : 5img.com/img13/740/24screenshot.png Meine PS1-Zeile hat also die Farbe des Texts 0;30;40. Ich hätte es gerne in der Farbe von 0;30;41.
Appas

Findet jemand anderes diese Magenta besonders hässlich? Es sieht aus wie Schlamm.
Ether

Du bist ein Gott unter den Männern. Beste plattformübergreifende Lösung. Vielen Dank
Andre Terra

25

Ein einfacher Einzeiler, der für die meisten Menschen geeignet ist.

msgcat --color=test

Deadsimple. Ist es möglich, nur die Standardhintergrundfarbe zu erhalten?
Vrcmr

msgcat --help erklärt nicht, was du getan hast ... Ist es ein Osterei?
vrcmr

@vrcmr Ich bin vor einiger Zeit in einem Blog auf diesen Einzeiler gestoßen und konnte leider auch --color=testin der Manpage von msgcat keine Erwähnung finden . Ich halte es für ein nicht konfigurierbares Osterei.
JacK TrocinskI

Für alle anderen Interessenten --color=testwird in Abschnitt 9.11.2 die Umgebungsvariable 'TERM' unterinfo msgcat
Gerrit0

7

Ich habe ein kleines Skript dafür gemacht :)

Übergeben Sie ihm eine Zahl nund er spuckt nfarbige Linien zusammen mit dem Ansi-Index jeder Farbe aus (Sie können ihn verwenden $(tput setaf <ansi-index>)).

Hier ist ein Screenshot der (Teil-) Ausgabe:

ansi-farben

ich habe auch dieses bekommen , das ich von twerth gegabelt (und leicht modifiziert) habe :

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

… Was in meinem aktuellen Thema zeigt:

Terminal löscht (es ist Farben)!


Funktioniert das auf dem Mac?
Kyo

Sind das die einzigen 7 Farben, die wir haben können ???
Kyo

@ihue - natürlich nicht, ich habe ein Skript dafür gemacht .. check it out . Sie können ihm eine Nummer geben n(z. B. 256) und er wird die nFarben ausspucken, die Ihr Terminal unterstützt.
Eliran Malka

Ihr Skript ist cool, aber #!/usr/bin/env shkeine gute Idee. Es funktioniert nicht mit der Standard-Shell von Ubuntu, die ein Bindestrich ist. Ich musste es ändern, um zu schlagen.
Teresa e Junior

5

Ich wollte kürzlich das Drehbuch finden, auf das sich viele Leute beziehen. Es ist aus dem tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Das Drehbuch stammt von Daniel Crisman.

Es wird genau das gleiche ausgegeben wie auf dem Bild der Frage. Das Skript selbst:

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

Dies ist eine modifizierte Version des TLDP-Skripts hier . Es zeigt Standardfarben und lebhafte Farben (Codes 90-97 und 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

Beispielausgabe:

gnome-terminal screenshot


0

Diese Frage ist eigentlich ein Top-Ergebnis, wenn ich suche, wie man Farbcodes in einem Terminal anzeigt. Also wollte ich Gerechtigkeit geben und geben, wonach das OP genau suchte. Ich erinnere mich, dass der Screenshot etwas vertraut ist. Zuerst dachte ich, dass es von Gogh ist, aber es ist ein bisschen anders. Dann wurde mir klar, dass es genau dasselbe Skript ist, das in iTerm2-Farben verwendet wird .

Glück, fügten sie genug , um einen Kommentar zu woher es kam ursprünglich aus

Ich poste das Skript als Referenz, entnommen aus iTerm2 mit Original-Credits:

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

Hier ist das Skript in Aktion:

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.