Hoe verander je de kleur van je Linux terminal

Je kunt kleur toevoegen aan je Linux terminal met speciale ANSI coderingsinstellingen, ofwel dynamisch in een terminal commando of in configuratiebestanden, of je kunt kant-en-klare thema’s gebruiken in je terminal emulator. Hoe dan ook, de nostalgische groene of amberkleurige tekst op een zwart scherm is geheel optioneel. Dit artikel laat zien hoe je Linux zo kleurrijk (of monochroom) kunt maken als je zelf wilt.

Terminal mogelijkheden

Moderne systemen staan meestal standaard op minstens xterm-256color, maar als je zonder succes probeert kleur aan je terminal toe te voegen, moet je je TERM instelling controleren.

Historisch waren Unix terminals letterlijk dat: fysieke punten aan het letterlijke eindpunt (termination) van een gedeeld computersysteem waar gebruikers commando’s konden intypen. Ze waren uniek ten opzichte van de teletype machines (dat is waarom we vandaag de dag nog steeds /dev/tty apparaten in Linux hebben) die vaak werden gebruikt om op afstand commando’s te geven. Terminals hadden ingebouwde CRT monitoren, zodat gebruikers in hun kantoor aan een terminal konden zitten om direct met het mainframe te communiceren. CRT monitoren waren duur – zowel om te maken als om te bedienen; het was gemakkelijker om een computer ruwe ASCII tekst te laten uitspuwen dan om zich zorgen te maken over anti-aliasing en andere finesses die moderne computeristen als vanzelfsprekend beschouwen. Maar de ontwikkelingen in de technologie gingen ook toen al snel, en het werd snel duidelijk dat als nieuwe video display terminals werden ontworpen, zij nieuwe mogelijkheden nodig hadden die optioneel beschikbaar moesten zijn.

Bijvoorbeeld, de fancy nieuwe VT100 uitgebracht in 1978 ondersteunde ANSI kleur, dus als een gebruiker het terminal type identificeerde als vt100, dan kon een computer kleuren output leveren, terwijl een basis serieel apparaat misschien niet zo’n optie had. Hetzelfde principe geldt vandaag, en het wordt ingesteld door de omgevingsvariabele TERM. U kunt uw TERM-definitie controleren met echo:

$ echo $TERM
xterm-256color

Het verouderde (maar op sommige systemen nog steeds onderhouden in het belang van achterwaartse compatibiliteit) /etc/termcap bestand definieerde de mogelijkheden van terminals en printers. De moderne versie hiervan is terminfo, te vinden in /etc of /usr/share, afhankelijk van uw distributie. Deze bestanden geven een lijst van mogelijkheden die beschikbaar zijn in verschillende soorten terminals, waarvan vele gedefinieerd zijn door historische hardware: er zijn definities voor vt100 tot vt220, en ook voor moderne software-emulators zoals xterm en Xfce. De meeste software maakt het niet uit welk terminal type je gebruikt; in zeldzame gevallen kun je een waarschuwing of foutmelding krijgen over een onjuist terminal type wanneer je inlogt op een server die controleert op compatibele functies. Als je terminal is ingesteld op een profiel met zeer weinig mogelijkheden, maar je weet dat de emulator die je gebruikt meer mogelijkheden heeft, dan kun je de instelling wijzigen door de omgevingsvariabele TERM te definiëren. U kunt dit doen door de TERM variabele te exporteren in uw ~/.bashrc configuratiebestand:

export TERM=xterm-256color

Bewaar het bestand, en laad uw instellingen opnieuw:

$ source ~/.bashrc

ANSI kleurcodes

Moderne terminals hebben ANSI escape-sequenties geërfd voor “meta” functies. Dit zijn speciale reeksen tekens die een terminal interpreteert als acties in plaats van tekens. Bijvoorbeeld, deze sequentie wist het scherm tot de volgende 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

Wijzig uw lokale lijst naar wens. Wanneer u tevreden bent met uw keuzes, slaat u het bestand op. Uw kleurinstellingen zijn slechts een database en kunnen niet direct door ls worden gebruikt, maar u kunt dircolors gebruiken om shellcode te krijgen die u kunt gebruiken om LS_COLORS in te stellen:

$ 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

Kopieer en plak die uitvoer in uw ~/.bashrc bestand en herlaad. Als alternatief kunt u die uitvoer rechtstreeks in uw .bashrc-bestand dumpen en opnieuw laden.

$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc

U kunt Bash ook .dircolors laten oplossen bij het opstarten in plaats van de conversie handmatig uit te voeren. Realistisch gezien zult u waarschijnlijk niet vaak van kleur veranderen, dus dit is misschien wat overdreven, maar het is een optie als u van plan bent uw kleurenschema vaak te wijzigen. Voeg in uw .bashrc-bestand de volgende regel toe:

] && eval "`dircolors --sh $HOME/.dircolors`"

Als u een .dircolors-bestand in uw homedirectory hebt, evalueert Bash dit bij het opstarten en stelt het LS_COLORS dienovereenkomstig in.

Color

Kleuren in uw terminal zijn een gemakkelijke manier om uzelf een snelle visuele referentie te geven voor specifieke informatie. Maar misschien moet u er niet te zwaar op leunen. Kleuren zijn immers niet universeel, dus als iemand anders uw systeem gebruikt, ziet hij de kleuren misschien anders dan u. Bovendien, als je een verscheidenheid aan tools gebruikt om met computers te communiceren, zou je ook kunnen merken dat sommige terminals of verbindingen op afstand niet de kleuren bieden die je verwacht (of helemaal geen kleuren).

Die waarschuwingen terzijde, kleuren kunnen nuttig en leuk zijn in sommige workflows, dus maak een .dircolor database aan en pas het naar hartelust aan.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.