Ich kenne Bibliotheken in Sprachen wie Ruby und Javascript, um das Einfärben von Terminalskripten durch die Verwendung von Farbnamen wie "rot" zu vereinfachen.
Aber gibt es so etwas für Shell-Skripte in Bash oder Ksh oder was auch immer?
bash
shell-script
terminal
colors
der Spiegel
quelle
quelle
Antworten:
Sie können Farben in Ihren Bash-Skripten wie folgt definieren:
Und verwenden Sie sie dann, um in den gewünschten Farben zu drucken:
quelle
Sie können
tput
ODER verwendenprintf
Verwenden
tput
,erstelle einfach eine funktion wie unten und benutze sie
Sie können die obige Funktion mit aufrufen
shw_err "WARNING:: Error bla bla"
Verwenden
printf
quelle
echo -e
ist nichtprintf
und benötigt auch eine Warnung, dass es sich von dertput
Option dadurch unterscheidet, dass es sich nicht automatisch an den Anzug anpasst$TERM
.In zsh :
quelle
print -P '%F{red}blah%f'
Für einfache, häufige Verwendungen (vollständige Textzeile nur in einer Farbe, mit nachgestelltem Zeilenumbruch) habe ich den Code von jasonwryan wie folgt geändert :
quelle
awk -v red="$(printf '\e[1;31m%%s\e[0m\\n')" -v green="$(printf '\e[1;32m%%s\e[0m\\n')" 'BEGIN { printf red, "This text is in red"; printf green, "This text is in green" }'
Besser ist die Verwendung von
tput
Escape-Zeichen in Abhängigkeit von den Ausgabe- / Terminalfunktionen. (Wenn ein Terminal keine\e[*
Farbcodes interpretieren kann, ist die Ausgabe "verschmutzt", was das Lesen erschwert. Wenn Sie einegrep
solche Ausgabe durchführen, werden diese manchmal\e[*
in den Ergebnissen angezeigt.)Siehe dieses Tutorial für
tput
.Du kannst schreiben :
Hier ist ein Tutorial zum Drucken einer farbigen Uhr im Terminal.
Beachten Sie außerdem, dass
tput
beim Umleiten von STDOUT in eine Datei möglicherweise noch Escapezeichen ausgegeben werden:Um dies zu verhindern, richten Sie Ihre
tput
Variablen wie in dieser Lösung vorgeschlagen ein .quelle