GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschiedliche Farbe für Befehl und Ausgabe

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

Linux
  1. Anzeigen der vollständigen Ausgabe des PS-Befehls

  2. Befehlsausgabeumleitung auf Datei und Terminal

  3. Wie kann ich das aktuelle Datum und die aktuelle Uhrzeit im Terminal abrufen und einen benutzerdefinierten Befehl im Terminal dafür festlegen?

  4. docker:unterschiedliche PID für `top` und `ps`

  5. Warum zeigen der Befehl free und dmidecode unterschiedliche Werte für RAM an?

So ändern Sie die Ausgabefarbe von „Echo“ in Linux

So lesen Sie die Ausgabe und Verwendung von Linux Top Command

50 Produktiver und praktischer grep-Befehl für Linux-Enthusiasten

Tutorials und Beispiele für Linux Head-Befehle für Anfänger

Erklärt:Eingabe-, Ausgabe- und Fehlerumleitung in Linux

So färben Sie die Diff-Ausgabe für eine bessere Ansicht ein