Wie ändert man die Ausgabefarbe des Echos in Linux?
Ich versuche zu drucken einen text im terminal mit Befehl echo.
Will ich drucken Sie den text in einer roten Farbe. Wie kann ich das tun?
InformationsquelleAutor der Frage satheesh.droid | 2011-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese ANSI-escape-codes:
Und verwenden Sie Sie dann wie dies in Ihrem Skript:
dem Drucke
love
in rot.Vom @james-lim ' s Kommentar, wenn Sie die
echo
Befehl, werden Sie sicher, dass das-e flag benutzen, um zu erlauben, backslash-escapes.(nicht hinzufügen
"\n"
bei der Verwendung von echo-es sei denn, Sie möchten, fügen Sie zusätzliche leere Zeile)InformationsquelleAutor der Antwort Tobias
Können Sie die genial
tput
Befehl (vorgeschlagen in Ignacio Antwort) zu produzieren terminal-control-codes für alle möglichen Dinge.Nutzung
Bestimmten
tput
sub-Befehle werden später noch besprochen.Direkte
Call
tput
als Teil einer Sequenz von Befehlen:Verwenden
;
statt&&
also, wenntput
Fehlern den text noch zeigt.Shell-Variablen
Andere option ist die Verwendung von shell-Variablen:
tput
erzeugt Sequenzen von Zeichen, die vom terminal interpretiert, als haben Sie eine Besondere Bedeutung. Sie werden nicht bewiesen. Beachten Sie, dass Sie noch gespeichert werden können, die in Dateien verarbeitet oder als Eingabe von anderen Programmen als der terminal.Kommando-substitution
Kann es günstiger sein, legen Sie
tput
's Ausgabe direkt in Ihrecho
- strings mit Kommando-substitution:Beispiel
Den oben genannten Befehl erzeugt diese auf Ubuntu:
Vordergrund & Hintergrundfarbe Befehle
Farben sind wie folgt:
Gibt es auch nicht-ANSI-Versionen der Farbe einstellen der Funktionen (
setb
stattsetab
undsetf
stattsetaf
), die verwenden Sie unterschiedliche zahlen, hier nicht gegeben.Text-Modus-Befehle
Cursor-Bewegung Befehle
Klar und insert-Befehle
Andere Befehle
Mit compiz wackelig windowsdie
bel
Befehl macht die terminal-wackeln für ein zweiten zu ziehen die Aufmerksamkeit des Benutzers.Skripte
tput
akzeptiert Skripts mit einem Befehl pro Zeile, die ausgeführt werden, um vortput
beendet.Vermeiden temporäre Dateien, die von echo ein multiline-string und Rohrleitungen:
Siehe auch
man-1 tput
man 5 terminfo
für die vollständige Befehlsliste und weitere details über diese Optionen. (Die entsprechendentput
Befehl aufgeführt ist, in derCap-name
Spalte der großen Tabelle beginnt in Zeile 81.)InformationsquelleAutor der Antwort Drew Noakes
Verwenden
tput
mit dersetaf
Funktion und parameter des1
.InformationsquelleAutor der Antwort Ignacio Vazquez-Abrams
Den
[31m
steuert den text Farbe:30
-37
setzt Vordergrund Farbe40
-47
setzt hintergrund FarbeEine vollständige Liste der Farb-codes finden Sie hier.
Es ist gute Praxis zurücksetzen die Farbe des Textes zurück
\033[0m
am Ende der Zeichenfolge.InformationsquelleAutor der Antwort Neo
Dies ist die Farbe wechseln
\033[
. Sehen Geschichte.Farbe codes sind wie
1;32
(hellgrün)0;34
(Blau),1;34
(hellblau), etc.Beenden wir Farb-Sequenzen mit einer Farbe wechseln
\033[
und0m
die keine-Farbe code. Nur wie öffnen und schließen von tabs in einer markup-Sprache.Einfache Farbe
echo
Funktion Lösung:InformationsquelleAutor der Antwort Jorge Bucaran
Einen ordentlichen Weg, um Farbe zu ändern, die nur für ein
echo
ist die Definition einer solchen Funktion:Verwendung:
Oder könnte man direkt verwenden Farbcodes erwähnt in Drew ' s Antwort:
InformationsquelleAutor der Antwort Alireza Mirian
Verwenden
tput
zu berechnen Farbcodes. Vermeiden Sie die Verwendung der ANSI-escape-code (z.B.\E[31;1m
für rot), weil es weniger tragbar. Die Bash unter OS X, zum Beispiel, nicht unterstützen.InformationsquelleAutor der Antwort Wilfred Hughes
Diese Frage beantwortet wurde und immer wieder 🙂 aber warum nicht.
Zuerst mit
tput
ist mehr tragbar in modernen Umgebungen als manuell Einspritzen von ASCII-codes durchecho -E
Hier ist eine kleine bash Funktion:
Jetzt können Sie verwenden:
bekommen:
Hinweise auf die übertragbarkeit von
tput
Ersten mal
tput(1)
source-code hochgeladen wurde im September 1986tput(1)
wurde in die X/Open Flüche Semantik in den 1990er Jahren (1997-standard hat die Semantik, die unten erwähnt werden).So, es ist (ganz) allgegenwärtig.
InformationsquelleAutor der Antwort Ahmed Masud
Diese codes funktionieren auf meiner Ubuntu-box:
Dieser druckt die Buchstaben a b c d alle in verschiedenen Farben:
For-Schleife:
InformationsquelleAutor der Antwort Eric Leschinski
Dank @k-fünf für diese Antwort
Ergebnis
Hoffe, das Bild helfen, Sie zu wählen Sie Ihre Farbe für Ihr bash 😀
InformationsquelleAutor der Antwort kyo
Für die Lesbarkeit
Wenn Sie möchten, zu verbessern die Lesbarkeit des Codes, können Sie
echo
den string zuerst, dann fügen Sie die Farbe, die später mitsed
:InformationsquelleAutor der Antwort Ooker
Meine Lieblings-Antwort, so weit ist coloredEcho.
Nur nach einer anderen option können Sie überprüfen Sie heraus dieses kleine tool xcol
https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/
verwenden Sie es nur wie grep, und es wird Kolorieren Ihre stdin mit einer anderen Farbe für jedes argument, zum Beispiel
Beachten Sie, dass es nimmt eine beliebige reguläre Ausdrücke, die sed akzeptieren.
Dieses tool verwendet die folgenden Definitionen
Verwende ich diese Variablen in meinem Script, wie so
InformationsquelleAutor der Antwort nachoparker
Erweitern diese Antwortfür die faulen von uns:
InformationsquelleAutor der Antwort Mahn
Und das, was ich verwendet, um zu sehen, alle Kombination und entscheiden, welche liest cool:
InformationsquelleAutor der Antwort isntn
Habe ich geschrieben swag zu erreichen, dass nur.
Können Sie nur
Installieren Sie nun alle die escape-Befehle als txt-Dateien zu einem bestimmten Ziel über:
Oder-noch einfacher-über:
Wird installieren Sie die Farben auf
~/.colors
.Entweder, Sie benutzen Sie wie folgt:
Oder diese Weise, die finde ich eigentlich interessanter:
Check it out auf asciinema!
InformationsquelleAutor der Antwort throws_exceptions_at_you
Niemand bemerkt die Nützlichkeit der ANSI-code 7 Umgekehrt video.
Es bleiben lesbar auf jedem terminal-Systeme-Farben, schwarz oder weißem hintergrund oder anderen Geschöpfen Paletten, durch den Austausch von Vorder-und hintergrund-Farben.
Beispiel für einen roten hintergrund, der überall funktioniert:
Dies ist, wie es aussieht, wenn die änderung der terminal built-in-Systeme:
Dies ist die loop-Skript verwendet, für das gif.
Sehen https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
InformationsquelleAutor der Antwort Cryptopat
Sollten Sie auf jeden Fall nutzen tput über raw-ANSI-Steuersequenzen.
vom http://wiki.bash-hackers.org/scripting/terminalcodes
Sagte, ich schrieb ein kleines helper-Bibliothek namens bash-Farbtondie fügt eine weitere Schicht auf der Oberseite des tput, so dass es noch einfacher zu verwenden ist (imho):
Beispiel:
tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."
Geben würde das folgende Ergebnis:
InformationsquelleAutor der Antwort ArtBIT
Hier ist ein einfaches kleines Skript, ich habe vor kurzem, das wird Kolorieren
jeder weitergeleiteten Eingabe statt "Toilette".
File: color.bsh
Dann rufen Sie es mit der Farbe rot (196):
$> echo "text you want colored red" | color.bsh 196
InformationsquelleAutor der Antwort
Hier ist die einfachste und lesbare Lösung.
Mit bashj (https://sourceforge.net/projects/bashj/), würden Sie wählen Sie einfach eine der folgenden Zeilen:
256x256x256
Farben sind verfügbar, wenn Sie die Farbe zu unterstützen, in Ihre terminal-Anwendung.InformationsquelleAutor der Antwort Fil
Nur als etwas, das ein wenig draußen, und übergeben Sie es durch grep wird, markieren Sie ihn als rot (aber nur rote). Sie können auch die named pipes verwenden, so dass Ihr string ist näher an das Ende der Zeile:
InformationsquelleAutor der Antwort FinalDuty
Diese Antwort richtig, außer dass der Aufruf Farben sollten nicht innerhalb der Anführungszeichen.
Sollte den trick tun.
InformationsquelleAutor der Antwort Dale Corns