Ich habe mich gefragt, ob es möglich ist, die Farbe der Ausgabe eines Befehls in Linux in eine andere Farbe als die der Befehlszeile zu ändern, in die ich eingebe. Es ist etwas eintönig und schwer zu finden, wo die Ausgabe beginnt. mögen,
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
Vielen Dank
preexec () { echo -n "\\e[40;34m" }
; Dieprecmd
Funktion ist IMHO nicht notwendig, es scheint, dass zsh die Farbe selbst zurücksetzt, bevor die Eingabeaufforderung angezeigt wird. Dies funktioniert jedoch nur bei Befehlen, die die Farbe selbst nicht verändern (prominentes Beispiel istls
), wie von Aaron hervorgehoben. Mitcat
,bc
, eingebauten Shell - Befehlen usw. (auchalpine
) das funktioniert gut."\\e[40;34m"
an das Ende meinesPROMPT
var, und setzen Sie es wieder auf weiß mitpreexec () { echo -n "\\e[40;37m" }
...zle_highlight=(default:fg=cyan)
eine aktuelle zsh-Version. Zsh bietet auch dynamische Färbung an, wiefish
; siehe den abschnitt CHARACTER HIGHLIGHTING in man zshzle.Antworten:
Nicht wirklich; Die Farbe der Ausgabe eines bestimmten Programms wird vom Befehl und nicht vom Terminal gesteuert.
Vorausgesetzt, Ihr Terminal versteht die ANSI-Escape-Codes für Farbe (die meisten tun dies), können Sie mit Escape-Codes die gewünschte Aufforderungsfarbe am Anfang der Aufforderung und die gewünschte Ausgabefarbe am Ende festlegen. Dies würde dazu führen, dass Ihre Befehlszeilen auch in der Farbe angezeigt werden, die Sie für die Ausgabe festgelegt haben. Dies ist jedoch wahrscheinlich so ähnlich, wie Sie es möchten. Zum Beispiel das Folgende:
Sie erhalten eine Eingabeaufforderung, die wie folgt aussieht:
mit 'user' und 'host' in lila, 'wd' (dein cwd) in braun (dunkelgelb) und allem nach dem '$' in was auch immer dein terminal für hellblau verwendet. (Ein Standard-xterm gibt dies in Cyan wieder. Das Gnome-Terminal scheint standardmäßig einen schönen Farbton von Kornblumenblau zu haben.)
Der tatsächliche Farbcode, wie er in dem für bash erforderlichen Format angegeben ist, ist beispielsweise
\[\033[00;35m\]
, wo00;35
sich die tatsächliche Farbspezifikation befindet; Das führende00
ändert sich selten, kann aber IIRC-Fettdruck- (01), Unterstreichungs- (??) und Umkehrvideoeffekte (??) erzeugen, während das nachfolgende '35' die tatsächliche Farbe ist, die in diesem Fall lila ist.Es ist überraschend schwer, eine anständige Liste von ANSI-Farbcodes zu finden, aber die Vordergrundfarben reichen von 30 bis 37 und die Hintergrundfarben von 40 bis 47 wie folgt:
Denken Sie daran, dass Programme, die Sie ausführen und deren Farben nicht über Escape-Codes festgelegt wurden, diese Farbe annehmen, da Sie für alles, was Ihrer Eingabeaufforderung folgt, eine Standardfarbe festlegen Pager wird die Ausgabe wahrscheinlich in der Farbe angezeigt, die Sie für andere Befehle festgelegt haben. Inzwischen Befehle , die sie ihre eigenen Farben über Escape - Codes gesetzt werden Ihre Bemühungen völlig ignorieren.
quelle
tput
zum Kolorieren viel besser lesbar ist. Beispiel: Meine Eingabeaufforderung (in Bash)export PS1="[\t \[$(tput setaf 9)\]\u\[$(tput setaf 15)\]@\[$(tput setaf 12)\]\h \[$(tput sgr0)\]\w ] \$ "
gibt die Uhrzeit aus, dann den Benutzernamen in einer Farbe@
und den Hostnamen in einer dritten (derzeit rot, weiß und blau). Anschließend werden PWD und ausgegeben$
. Es ist sehr leicht auf einen Blick zu erkennen, wo sich die Eingabeaufforderungen befinden, wenn Sie durch den Verlauf zurückblättern.~/.bashrc
. Suchen Sie die Zeile, in der PS1 (Ihre Eingabeaufforderungszeichenfolge) festgelegt ist, und ändern Sie sie wie in der Antwort beschrieben. Was Sie ändern müssen, hängt davon ab, wie Ihre Eingabeaufforderungszeichenfolge eingerichtet ist. Die meisten wichtigen Details sind jedoch in meiner Antwort enthalten. Den Rest finden Sie, indem Sie ein wenig googeln. Ich bin mir nicht sicher, was Sie mit "gibt es eine Möglichkeit, die letzte Farbe so zu halten, wie sie vorher war?"Sie können die Ausgabe an ein Programm übergeben, das die Färbung vornimmt. Zum Beispiel gibt es Programme wie
pycolor
:So bauen Sie Ihre eigenen:
Mehr zur Farbausgabe.
quelle
Ja, ich arbeite für Bash, zumindest unter Linux und Mac OS.
Stellen Sie zuerst einige Attributvariablen ein und die PS1-Eingabeaufforderung, um das Terminal mit den gewünschten Befehlszeilenattributen zu belassen. Beispiel:
Verwenden Sie dann den bash DEBUG-Trap, der unmittelbar vor jedem Befehl ausgeführt wird, um die Textattribute für die Befehlsausgabe zu ändern:
quelle
Eine andere Alternative (befehlsbezogen) ist grc - generic colorizer. Das Einrichten der regulären Ausdrücke zum Einfärben von Objekten ist sehr aufwändig. Ich habe es hier erfahren:
https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c
und hier:
https://unix.stackexchange.com/questions/26313/colored-find-output
Ich bin kein Blitz mit Regexen, also habe ich nicht viel mit diesen Befehlen gearbeitet.
quelle
Werfen Sie diese in Ihre .bashrc-Datei und geben Sie die Datei nach dem Speichern als Quelle ein.
Sobald dies erledigt ist, können Sie diese in Ihrem Terminal dauerhaft verwenden oder bis Sie die Variablen entweder auskommentieren oder vollständig löschen. Sie können sie in Skripten auf Ihrem Computer oder mit Befehlsersetzung oder was auch immer verwenden. Hier ist ein Beispiel, wie ich sie persönlich benutze:
Normalerweise verwende ich diese mit einzelnen Befehlen
echo
und / oderprintf
Befehlen, aber Sie können sie verwenden, um andere Befehle wie denping
Befehl einzufärben . Fügen Sie Folgendes hinzu.bashrc
, um die Effekte zu erhalten. Geben Sie dann eine Quelle für Ihre.bashrc
Datei ein und führen Sie dencping
Befehl zur Verwendungping
mit lila Text aus. Sie können jede Befehlsfunktion so einstellen, dass jede Farbe verwendet wird, die Ihr Terminal unterstützt.Dann versuche es:
Ihre Ausgabe für
cping
wird lila sein. Wenn Sie mehrere Farben in derselben Ausgabe verwenden möchten, können Sie diese auf einzigartige Weise hinzufügen. Wie Sie es machen, liegt ganz bei Ihnen. Zum Beispiel:quelle
Sie sollten sich den Befehl hl ansehen, der auf git hub verfügbar ist:
github: git clone http://github.com/mbornet-hl/hl
und auf:
http://www.flashnux.com/notes/page_000022_US.html
hl ist ein in C geschriebener Linux-Befehl, der speziell zum Färben einer Textdatei oder der Ausgabe eines Befehls entwickelt wurde. Sie können bis zu 42 Farben gleichzeitig verwenden und mithilfe einer Konfigurationsdatei die Befehlszeilen vereinfachen. Sie können die Ausgabe jedes Befehls einfärben, der an einen anderen Befehl weitergeleitet werden kann. Und wenn Sie wissen, was reguläre Ausdrücke sind, können Sie sie ganz einfach verwenden. Sie können die Manpage verwenden, um zu verstehen, wie sie verwendet wird.
quelle