Einleitung
Das echo
Befehl gibt eine bestimmte Zeichenfolge an die aus Standard-Ausgangsrohr, zeigt normalerweise auf das Terminal. Obwohl die Standard-Ausgangsleitung auf andere Schnittstellen zeigen kann – die echo
Der Befehl wird normalerweise verwendet, um Nachrichten im Terminal zu drucken und anzuzeigen. Standardmäßig erbt der Text der angezeigten Nachricht die Farbe von anderem Text im Terminal (der an und für sich anpassbar ist). Es gibt jedoch mehrere Möglichkeiten, die Ausgabefarbe zu ändern echo
– sowohl für einzelne Strings als auch für ganze Nachrichten.
In dieser kurzen Anleitung sehen wir uns an, wie Sie die Ausgabefarbe von ändern können
echo
in Linux-basierten Systemen mit ANSI-Escape-Codes,tput
und wie Sie diesen Prozess in Bash-Skripten weniger ausführlich gestalten können.
Ändern Sie die Ausgabefarbe mit ANSI-Escape-Codes
Der einfachste Weg, die Farbe zu ändern, ist durch ANSI-Escape-Sequenzen/Codes. Alle ANSI-Escape-Codes beginnen mit dem Escape
Charakter, der in verschiedenen Formaten dargestellt werden kann – 27
in Dezimalzahl, x1B
im Hexadezimalformat als Steuerschlüssel ^[
, oder 33
im Oktalformat. Auf die Sequenzen folgt dann der Befehl:
33[command
Wo die öffnende Klammer (Kontrollsequenz-Einführer) ist optional, hilft aber, den Befehl vom Escape-Zeichen zu trennen. Wenn Sie a setzen Farbcode als Befehl ändert es die Farbe des eingehenden Textes:
33[0;34
0;34
ist beispielsweise der Code für die Farbe Blau. Damit allein können Sie die Farbe des Textes ändern echo
mit:
33[0;34Text
Wo Text
wäre blau gefärbt. Alternativ können Sie ein einfaches Bash-Skript zum Drucken in Betracht ziehen "Willkommen in Frankreich" in den Farben der französischen Flagge:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Das optionale -e
Flagge der echo
Befehl können Sie Sonderzeichen wie verwenden n
(Newline) und t
(Tabulator) innerhalb der Eingabezeichenfolge.
Sobald Sie das Skript ausgeführt haben:
$ ./colors.sh
Es fuehrt zu:
Die ANSI-Codes beschränken sich nicht nur auf die Farbe – sondern können auch für den Stil verwendet werden. Die Codes 0..9
Textstile darstellen, während die Codes 30...37
Farben darstellen:
Farbe | Codes | Textstile | Codes |
Schwarz | 30 | Einfacher Text | 0 |
Rot | 31 | Fetter Text | 1 |
Grün | 32 | Text mit geringer Intensität | 2 |
Braun / Orange | 33 | Text unterstreichen | 4 |
Blau | 34 | Blinkender Text | 5 |
Lila | 35 | Unsichtbarer Text | 8 |
Cyan | 36 | Durchgestrichener Text | 9 |
Hellgrau | 37 |
Lassen Sie uns ein Bash-Skript erstellen, um einige dieser Optionen zu erkunden:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
Das Ausführen dieses Skripts führt zu:
Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!
Ebenso können Sie die Hintergrundfarbe dieser Texte über Codes ändern 40..47
:
Farbe | Codes |
Schwarz | 40 |
Rot | 41 |
Grün | 42 |
Braun / Orange | 43 |
Blau | 44 |
Lila | 45 |
Cyan | 46 |
Hellgrau | 47 |
Das Ändern des Hintergrunds einer bestimmten Zeichenfolge läuft auf dieselbe Regel hinaus wie beim Ändern der Schriftfarbe – der Code selbst ändert das Verhalten:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Hinweis: Als Faustregel gilt: Sie können Schriftfarben in Hintergrundfarben übersetzen, indem Sie 10 addieren. 30
ist schwarze Schriftfarbe, 40
ist schwarze Hintergrundfarbe.
Ändern Sie die Ausgabefarbe mit tput
Eine Alternative zu ANSI-Codes ist die Verwendung von tput
Befehl:
$ tput setaf color_code
setf
ermöglicht 8 Farben, während setaf
erlaubt 256 Farben, also können Sie je nach verwendetem Befehl zwischen ihnen wechseln 0..7
und 0..255
wie die Farbcodes. Beide Befehle widmen 0..7
zu den gleichen Farbcodes, während mit setaf
, 8..15
sind hochintensive Farben und 16..231
sind verschiedene Farbtöne der ersten 8, und 232..255
sind Graustufenfarben:
Kredit: Wikipedia
Schließlich tput
ermöglicht es Ihnen auch, die Hintergrundfarbe zu ändern, Fett hinzuzufügen, die Intensität zu verringern usw. mit anderen Befehlen:
Textstile | Befehle |
Vordergrundfarbe | setaf |
Hintergrundfarbe | setab |
Kein Style | sgv0 |
Fetter Text | fett |
Text mit geringer Intensität | schwach |
Text unterstreichen | smul |
Blinkender Text | blinken |
Umgekehrter Text | Umdrehung |
Lassen Sie uns ein weiteres Skript erstellen, das verwendet tput
um die Ausgabefarbe zu ändern echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Dieses Skript gibt die folgende Ausgabe im Terminal aus:
Der tput-Befehl bietet eine einfache Möglichkeit, jede Farbe über einen einfachen Farbcode zu drucken. Lassen Sie uns nun ein Skript erstellen, das jeden für den Befehl tput verfügbaren Farbcode drucken kann:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Es werden 0 bis 255 Farben und ihre Codes gedruckt:
Zusammenfassung
In dieser kurzen Anleitung haben wir uns angesehen, wie Sie die Farbe von ändern können echo
's-Ausgabe unter Linux – unter Verwendung von ANSI-Escape-Sequenzen und der tput
Befehl.
Wir haben auch untersucht, wie Sie den Prozess mit Bash-Variablen weniger ausführlich gestalten, Hintergrundfarben optimieren und Text formatieren können.