Ich verbringe die meiste Zeit damit, in Unix-Umgebungen zu arbeiten und Terminal-Emulatoren zu verwenden. Ich versuche, Farbe in der Befehlszeile zu verwenden, weil Farbe die Ausgabe nützlicher und intuitiver macht.
Welche Optionen gibt es, um Farbe in meine Terminalumgebung zu bringen? Welche Tricks verwendest du? Auf welche Fallstricke sind Sie gestoßen?
Leider variiert die Farbunterstützung je nach Terminaltyp, Betriebssystem, TERM-Einstellung, Dienstprogramm, fehlerhafter Implementierung usw.
Hier sind einige Tipps aus meinem Setup, nach vielen Experimenten:
- Ich neige dazu,
TERM=xterm-color
zu setzen , die auf den meisten Hosts unterstützt wird (aber nicht auf allen). - Ich arbeite auf mehreren verschiedenen Hosts, verschiedenen Betriebssystemversionen usw. Ich verwende alles von macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux und FreeBSD. Ich versuche, die Dinge möglichst einfach und generisch zu halten.
- Ich mache eine Menge Arbeit mit GNU
screen
, was noch mehr Spaß macht. - Viele Betriebssysteme setzen Dinge wie
dircolors
und standardmäßig, und ich möchte dies nicht auf hundert verschiedenen Hosts ändern. Also versuche ich mich an die Vorgaben zu halten. Stattdessen passe ich die Farbkonfiguration meines Terminals an. -
Verwenden Sie Farbe für einige Unix-Befehle (
ls
,grep
,less
,vim
) und die Bash-Eingabeaufforderung. Diese Befehle scheinen die standardmäßigen „ANSI-Escape-Sequenzen“ zu verwenden. Zum Beispiel:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
Ich werde meine .bashrc
posten und beantworte meine eigene Frage Jeopardy Style.
Akzeptierte Antwort:
Hier sind ein paar Dinge, die Sie tun können:
Editoren + Code
Viele Editoren unterstützen die Syntaxhervorhebung. vim
und emacs
habe es standardmäßig an. Sie können es auch unter nano
aktivieren .
Sie können auch Code auf dem Terminal syntaktisch hervorheben, indem Sie Pygments als Befehlszeilentool verwenden.
grep grep --color=auto
hebt alle Spiele hervor. Sie können auch export GREP_OPTIONS='--color=auto'
verwenden um es ohne Alias persistent zu machen. Wenn Sie --color=always
verwenden , wird auch beim Paspelieren Farbe verwendet, was die Dinge verwirrt.
ls
ls --color=always
Farben angegeben durch:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(Hinweis:dircolors
kann hilfreich sein)
PS1
Sie können Ihre PS1 (Shell-Eingabeaufforderung) so einstellen, dass sie Farben verwendet. Zum Beispiel:
PS1='e[33;[email protected]: e[31mWe[0m$ '
Wird eine PS1 produzieren wie:
[gelb][E-Mail geschützt]:[rot]~[normal]$
Dabei kann man richtig kreativ werden. Als Idee:
PS1='e[se[0;0He[1;33mh tne[1;32mThis is my computere[u[[email protected]: w]$ '
Fügt eine Leiste oben auf Ihrem Terminal mit zufälligen Informationen hinzu. (Verwenden Sie für beste Ergebnisse auch alias clear="echo -e 'e[2Jnn'"
.)
Escape-Sequenzen entfernen
Verwandte:Nicht aufgeführte Bildschirmauflösung?
Wenn etwas bei der Ausgabe von Farbe hängen bleibt, wenn Sie es nicht möchten, verwende ich diesen sed
Zeile zum Entfernen der Escape-Sequenzen:
sed "s/[^[[0-9;]*[a-zA-Z]//gi"
Wenn Sie ein authentischeres Erlebnis wünschen, können Sie auch Zeilen entfernen, die mit e[8m
beginnen , die das Terminal anweist, den Text auszublenden. (Nicht weithin unterstützt.)
sed "s/^[^[8m.*$//gi"
Beachten Sie auch, dass diese ^[s tatsächliche, wörtliche ^[s sein sollten. Sie können sie eingeben, indem Sie in der Bash ^V^[ drücken, also Strg + V , Strg + [ .