Jeg bruger det meste af min tid på at arbejde i Unix-miljøer og bruge terminalemulatorer. Jeg forsøger at bruge farver på kommandolinjen, fordi farver gør output mere nyttigt og intuitivt.
Hvilke muligheder findes der for at tilføje farve til mit terminalmiljø? Hvilke tricks bruger du? Hvilke faldgruber er du stødt på?
Desværre varierer understøttelsen af farver afhængigt af terminaltype, operativsystem, TERM-indstilling, hjælpeprogram, fejlbehæftede implementeringer osv.
Her er nogle tips fra min opsætning, efter en masse eksperimenter:
Jeg har en tendens til at indstille TERM=xterm-color
, hvilket understøttes på de fleste værter (men ikke alle).
Jeg arbejder på en række forskellige hosts, forskellige OS-versioner osv. Jeg bruger alt fra macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux og FreeBSD. I'm forsøger at holde tingene enkle og generiske, hvis det er muligt.
Jeg laver en masse arbejde med GNU screen
, hvilket tilføjer endnu et lag af sjov.
Mange OS'er indstiller ting som dircolors
og som standard, og jeg ønsker ikke at ændre dette på hundrede forskellige værter. Så jeg prøver at holde mig til standardindstillingerne. I stedet tweak jeg min terminal's farvekonfiguration.
Brug farve til nogle Unix-kommandoer (ls
, grep
, less
, vim
) og Bash-prompten. Disse kommandoer ser ud til at bruge standard "ANSI escape sequences". For eksempel:
alias less='less --RAW-CONTROL-CHARS'
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
I'll post min .bashrc
og besvare mit eget spørgsmål Jeopardy Style.
Her er et par ting, du kan gøre:
Redaktører + kode
Mange editorer har understøttelse af syntaksmarkering. vim
og emacs
har det som standard slået til. Du kan også [aktivere det under nano
] (https://askubuntu.com/questions/90013/how-do-i-enable-syntax-highlighting-in-nano).
Du kan også syntakshighlighte kode på terminalen ved at bruge Pygments som et kommandolinjeværktøj.
grep
grep --color=auto
fremhæver alle overensstemmelser. Du kan også bruge export GREP_OPTIONS='--color=auto'
for at gøre det vedvarende uden et alias. Hvis du bruger --color=always
, vil den bruge farve selv ved piping, hvilket forvirrer tingene.
ls
ls --color=always
Farver specificeret ved:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(tip: dircolors
kan være nyttigt)
PS1 Du kan indstille din PS1 (shellprompt) til at bruge farver. For eksempel:
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
vil give en PS1 som:
[yellow]lucas@ubuntu: [red]~[normal]$
Du kan blive rigtig kreativ med dette. Som en idé:
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
Sætter en bjælke øverst i din terminal med nogle tilfældige oplysninger. (For de bedste resultater, brug også alias clear="echo -e '\e[2J\n\n'"
.)
Få bugt med Escape-sekvenser
Hvis noget sidder fast og udsender farve, når du ikke ønsker det, bruger jeg denne sed
-linje til at fjerne escape-sekvenserne:
sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
Hvis du vil have en mere autentisk oplevelse, kan du også fjerne linjer der starter med \e[8m
, som instruerer terminalen til at skjule teksten. (Ikke bredt understøttet.)
sed "s/^\[^[8m.*$//gi"
Bemærk også, at disse ^[s skal være faktiske, bogstavelige ^[s. Du kan skrive dem ved at trykke ^V^[ i bash, dvs. Ctrl + V, Ctrl + [.
grep
og ls
er allerede blevet nævnt, men hvis du vil have mange flere farver, så tjek Generic Coloriser, dens oprindelige formål var at farvelægge logfiler, men lige ud af boksen farvelægger den også ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
og cvs
.
Det er let at udvide, hvis du kender regexes. Jeg har tilføjet ps
og nmap
til listen (hvis du kommer ind på grc
vil jeg med glæde dele .conf-filerne for disse to værktøjer)
(Btw, for at installere det via synaptic
, pacman
og lignende har du måske mere held med at søge efter "grc")
Indstil en fed/farvet prompt. Fra cyberciti.biz og 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 \$ "
Det er også lykkedes mig at finde farveindstillinger, som er bredt understøttet, og som ikke udskriver vrøvle-tegn i ældre miljøer (selv FreeBSD4!), og det ser ud til at virke fint hvis TERM=vt100, xterm, xterm-color. (For det meste). Fra min .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