Ich habe in meiner PS1-Eingabeaufforderung mehrere Farben verwendet, z
\033]01;31\] # pink
\033]00m\] # white
\033]01;36\] # bold green
\033]02;36\] # green
\033]01;34\] # blue
\033]01;33\] # bold yellow
Wo finde ich eine Liste der Farbcodes, die ich verwenden kann?
Ich habe mir Colorize Bash Console Color angesehen, aber meine Frage nach einer Liste der tatsächlichen Codes wurde nicht beantwortet.
Es wäre schön, wenn es auch eine besser lesbare Form gäbe.
\]
hier tatsächlich nicht Teil der Farbsequenz ist. Es dient einem bestimmten Zweck, Eingabeaufforderungen festzulegen (dazu habe ich am Ende meiner Antwort einige Absätze hinzugefügt). "Es wäre schön, wenn es auch eine besser lesbare Form gäbe." -> das Ausschneiden und Einfügen in Ihrer eigenen Antwort ist eine Möglichkeit, dies zu tun.Antworten:
Dies sind ANSI-Escape-Sequenzen . Dieser Link führt zu einer Tabelle mit Farbcodes, aber es gibt auch andere interessante Dinge auf dieser Wikipedia-Seite. Nicht alle funktionieren (zB) auf einer normalen Linux-Konsole.
Das ist falsch:
0
Setzt das Terminal auf seine Standardeinstellung zurück (die wahrscheinlich weiß ist). Der tatsächliche Code für den weißen Vordergrund ist 37. Außerdem ist die maskierte schließende Klammer am Ende (\]
) nicht Teil der Farbsequenz (in den letzten Absätzen unten finden Sie Erläuterungen zu ihrem Zweck beim Festlegen einer Eingabeaufforderung).Beachten Sie, dass Sie bei einigen GUI-Terminals ein benutzerdefiniertes Farbschema festlegen können. Dies wirkt sich auf die Ausgabe aus.
Es gibt hier eine Liste mit 7 Vordergrund- und 7 Hintergrundfarben, die ich noch nicht gesehen habe, aber sie scheinen zu funktionieren:
Wenn Sie ein 256-Farben-GUI-Terminal haben (ich denke, die meisten von ihnen sind jetzt), können Sie Farben aus dieser Tabelle anwenden:
Die ANSI-Sequenz, in der diese ausgewählt werden, beginnt mit der Nummer in der unteren linken Ecke
38;5;
für den Vordergrund und48;5;
für den Hintergrund, dann für die Farbnummer. Beispiel:Gibt mir ein hellorange auf tan (das heißt, die Farbkarte ist grob angenähert).
Sie können die Farben in dieser Tabelle 1 so sehen, wie sie auf Ihrem Terminal erscheinen würden:
Die Ausgabe ist selbsterklärend.
Einige Systeme setzen die Variable $ TERM auf,
xterm-256color
wenn Sie sich über einen Shell-Code in einem 256-Farben-Terminal befinden/etc/profile
. Bei anderen sollte es Ihnen möglich sein, Ihr Terminal für diese Verwendung zu konfigurieren. Dadurch erfahren TUI-Anwendungen, dass 256 Farben vorhanden sind, und Sie können Folgendes hinzufügen~/.bashrc
:Beachten Sie, dass Sie beim Verwenden von Farb-Escape-Sequenzen in der Eingabeaufforderung diese in
\
eckigen Klammern mit Escape-Zeichen ( vorangestellt) einschließen sollten :Beachten Sie, dass das
[
Innere der Farbsequenz nicht maskiert wird, die umschließenden jedoch. Der Zweck des letzteren ist es, der Shell anzuzeigen, dass die eingeschlossene Sequenz nicht zur Zeichenlänge der Eingabeaufforderung zählt. Wenn diese Anzahl falsch ist, passieren seltsame Dinge, wenn Sie durch den Verlauf zurückscrollen, z. B. wenn sie zu lang ist, wird die überschüssige Länge der zuletzt gescrollten Zeichenfolge an Ihre Eingabeaufforderung angehängt und Sie können keine Rücktaste drücken es (es wird genauso ignoriert wie die Eingabeaufforderung).Beachten Sie auch, dass Sie die Ausgabe eines Befehls, der bei jeder Verwendung der Eingabeaufforderung ausgeführt werden soll (anstatt nur einmal, wenn die Eingabeaufforderung festgelegt wird), als Literalzeichenfolge mit einfachen Anführungszeichen festlegen sollten, z.
Dies ist zwar kein gutes Beispiel, wenn Sie mit der Verwendung von speziellen
\d
oder\D{format}
sofortigen Escape- Anweisungen von bash zufrieden sind. Diese sind nicht Gegenstand der Frage, finden Sie jedochman bash
unterPROMPTING
. Es gibt verschiedene andere nützliche Fluchten, wie zum Beispiel\w
für das aktuelle Verzeichnis,\u
für den aktuellen Benutzer usw.1. Der Hauptteil dieser Tabelle, Farben 16 - 231 (beachten Sie, dass sie nicht in numerischer Reihenfolge vorliegen), ist ein RGB-Farbwürfel mit den Abmessungen 6 x 6 x 6. "Farbwürfel" bezieht sich auf die Tatsache, dass ein RGB-Farbraum unter Verwendung eines dreidimensionalen Arrays dargestellt werden kann (mit einer Achse für Rot, einer für Grün und einer für Blau). Jede Farbe im Würfel kann hier als Koordinaten in einem 6 x 6 x 6-Array dargestellt und der Index im Diagramm folgendermaßen berechnet werden:
Die erste Farbe im Würfel am Index 16 im Diagramm ist schwarz (RGB 0, 0, 0). Sie können diese Formel im Shell-Skript verwenden:
quelle
echo
nichts anderes als wörtlichen Text, der nicht mit einem Bindestrich (-
) beginnt . Es ist nicht tragbar. Alle gängigen Implementierungen verstoßen gegen den Standard, der besagt, dass keine Optionen unterstützt werden sollen. Schlimmer noch, sie sind inkonsistent. Sie solltenprintf
stattdessen verwenden. (Und nicht einbetten Variablen innerhalb printf Aussagen, Verwendung%s
.)colortest-256
Listen Sie die xterm-Palette in einer schönen kompakten Form auf. (apt-get install colortest
falls nicht vorhanden)Zumindest ein Teil der Liste sieht so aus:
basierend auf https://wiki.archlinux.org/index.php/Color_Bash_Prompt
quelle
Ich habe eine Bash-Funktion geschrieben, mit der Sie alle Farben anzeigen können, wenn dies hilft.
Sie können das in ein .bashrc / .bash_profile / .bash_aliases werfen oder es als Skript speichern und auf diese Weise ausführen. Sie können die Farben verwenden, um die Farbe zu ändern, wie ich es mit meinem Namen getan habe.
colorgrid () gibt aus:
Ich habe meinen Namen in meinem .bash_profile folgendermaßen geändert:
Beachten Sie, dass das Präfix 01 in einer Zeichenfolge wie
\[\033[01;38;5;214m\]a
fett gesetzt ist.quelle
Ein weiteres Skript wie das von TAFKA veröffentlichte 'goldilocks' zum Anzeigen von Farben, das zu Referenzzwecken vielleicht etwas praktischer ist:
Dies sollte für das von Ihnen verwendete Terminal die richtige Größe haben. Zu diesem Zweck ist es etwas übertrieben, aber jetzt können Sie viele Aspekte der Anzeige über Parameter steuern. Hoffentlich sind sie alle selbsterklärend.
quelle
quelle