Du kan tilføje farve til din Linux-terminal ved hjælp af særlige ANSI-kodningsindstillinger, enten dynamisk i en terminalkommando eller i konfigurationsfiler, eller du kan bruge færdige temaer i din terminalemulator. Uanset hvad, er den nostalgiske grønne eller ravfarvede tekst på en sort skærm helt valgfri. Denne artikel viser, hvordan du kan gøre Linux så farverig (eller så monokromatisk), som du ønsker.
Terminalfunktioner
Moderne systemer har normalt som standard mindst xterm-256color, men hvis du forsøger at tilføje farve til din terminal uden held, bør du kontrollere din TERM-indstilling.
Historisk set var Unix-terminaler bogstaveligt talt det: fysiske punkter ved det bogstavelige endepunkt (terminering) af et fælles computersystem, hvor brugerne kunne indtaste kommandoer. De var unikke i forhold til teletype-maskinerne (hvilket er grunden til, at vi stadig har /dev/tty-enheder i Linux i dag), som ofte blev brugt til at udstede kommandoer på afstand. Terminalerne havde indbyggede CRT-skærme, så brugerne kunne sidde ved en terminal på deres kontor for at interagere direkte med mainframen. CRT-skærme var dyre – både at fremstille og kontrollere; det var lettere at få en computer til at spytte grov ASCII-tekst ud end at bekymre sig om anti-aliasing og andre finesser, som moderne datamatikere tager for givet. Den teknologiske udvikling gik imidlertid hurtigt, selv dengang, og det blev hurtigt klart, at efterhånden som der blev designet nye video-terminaler, havde de brug for nye muligheder, der kunne være tilgængelige på valgfri basis.
F.eks. understøttede den nye, smarte VT100, der blev lanceret i 1978, ANSI-farve, så hvis en bruger identificerede terminaltypen som vt100, kunne en computer levere farveudgang, mens en grundlæggende seriel enhed måske ikke havde en sådan mulighed. Det samme princip gælder i dag, og det er indstillet af miljøvariablen TERM. Du kan kontrollere din TERM-definition med echo:
$ echo $TERM
xterm-256color
Den forældede (men stadig vedligeholdt på nogle systemer af hensyn til bagudkompatibilitet) /etc/termcap-fil definerede terminalernes og printernes muligheder. Den moderne version af den er terminfo, som ligger i enten /etc eller /usr/share, afhængigt af din distribution. Disse filer indeholder en liste over funktioner, der er tilgængelige i forskellige typer terminaler, hvoraf mange er defineret af historisk hardware: der er definitioner for vt100 til vt220, samt for moderne softwareemulatorer som xterm og Xfce. De fleste programmer er ligeglade med hvilken terminaltype du bruger; i sjældne tilfælde kan du få en advarsel eller en fejl om en forkert terminaltype, når du logger ind på en server, der kontrollerer kompatible funktioner. Hvis din terminal er indstillet til en profil med meget få funktioner, men du ved, at den emulator, du bruger, er i stand til flere, kan du ændre din indstilling ved at definere miljøvariablen TERM. Det kan du gøre ved at eksportere TERM-variablen i din ~/.bashrc-konfigurationsfil:
export TERM=xterm-256color
Spar filen, og genindlæs dine indstillinger:
$ source ~/.bashrc
ANSI-farvekoder
Moderne terminaler har arvet ANSI-emneordsekvenser for “meta”-funktioner. Det er særlige sekvenser af tegn, som en terminal fortolker som handlinger i stedet for tegn. Denne sekvens rydder f.eks. skærmen op til den næste prompt:
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
Rediger din lokale liste som ønsket. Når du er tilfreds med dine valg, skal du gemme filen. Dine farveindstillinger er blot en database og kan ikke bruges direkte af ls, men du kan bruge dircolors til at få shellkode, som du kan bruge til at indstille LS_COLORS:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
Kopier og indsæt dette output i din ~/.bashrc-fil, og genindlæs. Alternativt kan du dumpe dette output direkte ind i din .bashrc-fil og genindlæse.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Du kan også få Bash til at opløse .dircolors ved start i stedet for at foretage konverteringen manuelt. Realistisk set vil du sandsynligvis ikke ændre farver ofte, så dette er måske for aggressivt, men det er en mulighed, hvis du har planer om at ændre dit farveskema meget. Tilføj denne regel i din .bashrc-fil:
] && eval "`dircolors --sh $HOME/.dircolors`"
Hvis du har en .dircolors-fil i din hjemmemappe, evaluerer Bash den ved opstart og indstiller LS_COLORS i overensstemmelse hermed.
Color
Farver i din terminal er en nem måde at give dig selv en hurtig visuel reference til specifikke oplysninger. Du bør dog måske ikke læne dig alt for meget op ad dem. Farver er trods alt ikke universelle, så hvis en anden bruger dit system, ser vedkommende måske ikke farverne på samme måde som dig. Hvis du bruger en række forskellige værktøjer til at interagere med computere, kan du desuden opleve, at nogle terminaler eller fjernforbindelser ikke giver de farver, du forventer (eller farver overhovedet).
Sides disse advarsler kan farver være nyttige og sjove i nogle arbejdsgange, så opret en .dircolor-database, og tilpas den til dit hjertes indhold.