Sie können die Ausgabe an ein Programm übergeben, das die Färbung übernimmt. Beispielsweise gibt es Programme wie pycolor
:
pycolor module.py
So erstellen Sie Ihre eigene:
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
Mehr zur Farbausgabe.
Nicht wirklich; die Farbe der Ausgabe eines bestimmten Programms wird durch den Befehl gesteuert, nicht durch das Terminal.
Angenommen, Ihr Terminal versteht ANSI-Escape-Codes für Farbe (die meisten tun dies), könnten Sie Escape-Codes verwenden, um die gewünschte Farbe der Eingabeaufforderung am Anfang der Eingabeaufforderung und die gewünschte Ausgabefarbe am Ende festzulegen. Dies würde dazu führen, dass Ihre Befehlszeilen auch die Farbe haben, die Sie für die Ausgabe festgelegt haben, aber das ist wahrscheinlich so nah wie möglich an das, was Sie suchen. Zum Beispiel Folgendes:
$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '
gibt Ihnen eine Eingabeaufforderung, die wie folgt aussieht:
[email protected]:wd $ _
mit 'user' und 'host' in lila, 'wd' (Ihr cwd) in braun (dunkelgelb) und alles nach dem '$' in was auch immer Ihr Terminal für hellblau verwendet. (Ein Standard-xterm wird dies in Cyan darstellen; gnome-terminal scheint standardmäßig einen ziemlich schönen Farbton von Kornblumenblau zu verwenden.)
Der eigentliche Farbcode, wie er im notwendigen Format für bash angegeben ist, ist z. B. \[\033[00;35m\]
, wobei 00;35
ist die eigentliche Farbspezifikation; die führende 00
ändert sich selten, kann aber IIRC-Fett- (01), Unterstreichungs- (??) und Umkehrbild- (??) Effekte erzeugen, während die nachgestellte '35' die eigentliche Farbe ist, die in diesem Fall lila ist.
Es ist überraschend schwer, eine anständige Liste von ANSI-Farbcodes zu finden, aber Vordergrundfarben reichen von 30 bis 37 und Hintergrundfarben von 40 bis 47, wie folgt:
color fg bg
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
purple 35 45
cyan 36 46
gray/white 37 47
Denken Sie daran, dass Programme, die Sie ausführen, die ihre eigenen Farben nicht über Escape-Codes festlegen, diese Farbe annehmen werden, da Sie eine Standardfarbe für alles festlegen, was auf Ihre Eingabeaufforderung folgt, z. B. wenn Sie a ausführen Pager, sehen Sie seine Ausgabe wahrscheinlich in der gleichen Farbe, die Sie für andere Befehle festgelegt haben. In der Zwischenzeit Befehle, die tun eigene Farben über Escape-Codes zu setzen, wird Ihre Bemühungen komplett ignorieren.
Ja, ich habe das für Bash, zumindest unter Linux und Mac OS.
Legen Sie zunächst einige Attributvariablen und die PS1-Aufforderung zum Verlassen des Terminals mit den gewünschten Befehlszeilenattributen fest, zum Beispiel:
bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"
Verwenden Sie dann die bash-DEBUG-Trap, die unmittelbar vor jedem Befehl ausgeführt wird, um Textattribute für die Befehlsausgabe zu ändern:
trap 'echo -ne "${none}"' DEBUG