Ich verbringe die meiste Zeit mit der Arbeit in Unix-Umgebungen und mit Terminalemulatoren. Ich versuche, in der Befehlszeile Farbe zu verwenden, weil Farbe die Ausgabe nützlicher und intuitiver macht.
Welche Optionen gibt es, um Farbe in meine Terminalumgebung zu bringen? Welche Tricks wenden Sie an? Auf welche Fallstricke sind Sie gestoßen?
Leider variiert die Unterstützung für Farbe je nach Terminaltyp, Betriebssystem, TERM-Einstellung, Dienstprogramm, fehlerhaften Implementierungen usw.
Hier sind einige Tipps, die ich nach vielen Experimenten ausprobiert habe:
Ich neige dazu, TERM=xterm-color
zu setzen, was von den meisten Rechnern unterstützt wird (aber nicht von allen).
Ich arbeite mit verschiedenen Hosts, verschiedenen Betriebssystemversionen usw. Ich benutze alles von macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux und FreeBSD. Ich versuche, die Dinge einfach und allgemein zu halten, wenn möglich.
Ich arbeite viel mit GNU screen
, was eine weitere Ebene des Spaßes darstellt.
Viele Betriebssysteme setzen Dinge wie dircolors
standardmäßig, und ich möchte das nicht auf hundert verschiedenen Rechnern ändern. Also versuche ich, bei den Standardeinstellungen zu bleiben. Stattdessen ändere ich die Farbkonfiguration meines Terminals's.
Verwenden Sie Farbe für einige Unix-Befehle (ls
, grep
, less
, vim
) und den Bash-Prompt. Diese Befehle scheinen die Standard "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 meine eigene Frage im Jeopardy-Stil beantworten.
Hier sind ein paar Dinge, die Sie tun können:
Editoren + Code
Viele Editoren unterstützen die Syntaxhervorhebung. Bei vim
und emacs
ist sie standardmäßig aktiviert. Sie können sie auch [unter nano
] aktivieren (https://askubuntu.com/questions/90013/how-do-i-enable-syntax-highlighting-in-nano).
Sie können auch Syntax-Highlighting auf dem Terminal mit Pygments als Kommandozeilenwerkzeug verwenden.
grep
grep --color=auto
hebt alle Übereinstimmungen hervor. Sie können auch export GREP_OPTIONS='--color=auto'
verwenden, um es ohne einen Alias bestehen zu lassen. Wenn Sie --color=always
verwenden, wird es auch beim Piping die Farbe verwenden, was zu Verwirrung führt.
**Das verwirrt.
ls --color=always
Farben spezifiziert 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 Ihr PS1 (Shell-Prompt) so einstellen, dass es Farben verwendet. Zum Beispiel:
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
Erzeugt eine PS1 wie:
[yellow]lucas@ubuntu: [red]~[normal]$
Sie können damit wirklich kreativ werden. Als eine Idee:
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
Fügt eine Leiste am oberen Rand des Terminals mit einigen zufälligen Informationen ein. (Die besten Ergebnisse erzielen Sie, wenn Sie auch alias clear="echo -e '\e[2J\n\n'"
verwenden).
Entfernen von Escape-Sequenzen
Wenn etwas Farbe ausgibt, obwohl Sie das nicht wollen, verwende ich diese sed
-Zeile, um die Escape-Sequenzen zu entfernen:
sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
Wenn Sie eine authentischere Erfahrung wünschen, können Sie auch Zeilen entfernen, die mit \e[8m
beginnen, was das Terminal anweist, den Text zu verbergen. (Wird nicht allgemein unterstützt.)
sed "s/^\[^[8m.*$//gi"
Beachten Sie auch, dass diese ^[s echte, wörtliche ^[s sein sollten. Sie können sie eingeben, indem Sie ^V^[ in der Bash drücken, also Ctrl + V, Ctrl + [.
grep
und ls
wurden bereits erwähnt, wenn Sie viel mehr Farben wollen, schauen Sie sich Generic Coloriser an, sein ursprünglicher Zweck war es, Logdateien einzufärben, aber es färbt auch ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
und cvs
ein.
Es ist leicht zu erweitern, wenn Sie Regexe kennen. Ich habe ps
und nmap
zu der Liste hinzugefügt (wenn Sie sich mit grc
beschäftigen, bin ich mehr als froh, die .conf-Dateien für diese beiden Tools zu teilen)
(Übrigens, um es über synaptic
, pacman
und ähnliche zu installieren, sollten Sie besser nach "grc" suchen)
Legen Sie eine fette/farbige Eingabeaufforderung fest. Aus cyberciti.biz und der BashFAQ
# 'tput bold' will work regardless of the foreground and background colors.
# Place the tput output into variables, so they are only execd once.
bold=$(tput bold) # This could also be a color.
reset=$(tput sgr0)
export PS1="\u@\[$bold\]\h\[$reset\]:\w \$ "
Es ist mir auch gelungen, Farbeinstellungen zu finden, die weithin unterstützt werden und die in älteren Umgebungen (sogar FreeBSD4!) keine kauderwelschartigen Zeichen ausgeben, und es scheint gut zu funktionieren, wenn TERM=vt100, xterm, xterm-color. (Zum größten Teil). Aus meiner .bashrc:
# Set some options, based on the OS
OS=`uname -s`
case "$OS" in
"SunOS" )
# Solaris ls doesn't allow color, so use special characters
LS_OPTS='-F'
alias ls='ls ${LS_OPTS}'
;;
"Linux" )
# GNU ls supports colors!
# See dircolors to customize colors
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
"Darwin"|"FreeBSD")
# Most FreeBSD & Apple Darwin supports colors
export CLICOLOR=true
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
* )
echo "Unknown OS [$OS]"
;;
esac