Het is bijna nieuwjaar, en ik heb geen zin meer om serieus te werken.
Iedereen probeert iets te versieren voor de feestdagen: het huis, kantoor, werkplek... Laten we ook iets versieren! Bijvoorbeeld de opdrachtprompt. In zekere zin is de opdrachtprompt ook een werkplek.
In sommige distributies is deze al ‘versierd’:

In andere is deze grijs en onopvallend:

Maar we kunnen het bijvoorbeeld zo doen:

Natuurlijk, smaken verschillen. Als deze versiering u te opzichtig of ongepast lijkt, weet dan dat dit standpunt volledig legitiem is. En als u ook een beetje feeststemming wilt toevoegen, lees dan verder een klein nieuwjaarsartikel van Cloud4Y.
Laat me eerst uitleggen hoe de uitvoer van de terminal ‘versierd’ wordt. Dit gebeurt met behulp van escape-sequenties. Om precies te zijn, met ANSI/VT100 controlecode-sequenties. Dit betekent automatisch dat uw terminalemulator deze standaard moet ondersteunen, anders zal er geen nieuwjaarswonder plaatsvinden. En ja, het wordt verondersteld dat $SHELL bash is.
Deze commando’s worden escape-sequenties genoemd omdat elke sequentie begint met het ASCII-teken ‘escape’. Er zijn veel controle sequenties, en ze stellen ons in staat om bijvoorbeeld de terminalinstellingen weer te geven, de weergave en cursorbeweging te beheren, het lettertype te wijzigen, en tekst te verwijderen of te verbergen. We zullen uit de vele mogelijkheden één kiezen: het veranderen van de tekst- en achtergrondkleur.
We voeren de code-sequentie uit *ESC*[{attr1};...;{attrn}m
Als symbool Escape wordt zijn octale vorm gebruikt, dat wil zeggen 33. Wat betreft de attributen, hier is een kort overzicht van mogelijke waarden:
0 Reset alle attributen
1 Bright (verhoogde helderheid)
2 Dim (verduistering)
4 Underscore (onderstreping)
5 Blink (knipperen)
7 Reverse (omkering)
8 Hidden (tekst verbergen)
Foreground Colours (penkleur, deze kleur wordt gebruikt om tekst weer te geven):
30 Black (zwart)
31 Red (rood)
32 Green (groen)
33 Yellow (geel)
34 Blue (blauw)
35 Magenta (purper)
36 Cyan (cyaan)
37 White (wit)
Background Colours (papierkleur of achtergrondkleur):
40 Black (zwart)
41 Red (rood)
42 Green (groen)
43 Yellow (geel)
44 Blue (blauw)
45 Magenta (purper)
46 Cyan (cyaan)
47 White (wit)
Let op, als u nu in de terminal het volgende commando geeft: echo 33[0;31mwat tekst 33[0m’
… dan krijgt u voorspelbaar een monochrome abracadabra als output:

Waarom? Omdat u gebruik had moeten maken van de uitgebreide mogelijkheden van de echo-commando. Het is genoeg om één sleutel toe te voegen: echo -e ' 33[0;31m Sommige tekst 33[0m'
Nu ziet de output er goed uit:
![]()
We hebben de terminaloutput kleurgegeven. Laten we nu eens kijken hoe we de commandoprompt kunnen inkleuren.
Dit gebeurt door de PS1-variabele te wijzigen. Deze variabele is verantwoordelijk voor de commandoprompt. Ook het uiterlijk kan worden aangepast, onder andere met behulp van escape-sequenties. Maar er is één klein verschil: de sequentie moet beginnen met het teken “[”, en eindigen met het teken “]”, anders wordt het naar de terminal weergegeven.
Alle mogelijke commando-sequenties zijn uitvoerig beschreven in de bash-handleiding, dus ik stel voor dat de lezers zelf kiezen wat zij het leukst vinden om te zien in de commandoprompt. Als voorbeeld geef ik mijn waarde van de PS1-variabele:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Ik zal deze vreemde toverformule uitleggen:
[ 33[34;1m] — activeer helder blauw (tweede attribuut) voor de tekstkleur
t – geef de huidige tijd weer in het formaat UU:MM:SS
[ 33[0m] – reset de tekstkleurinstellingen
, — gewoon een komma (verrassend, toch?)
[ 33[32m] — activeer de groene tekstkleur
u@l@h – geef de gebruikersnaam, het terminalapparaatnummer en de korte hostnaam weer, gescheiden door het teken “@”
[ 33[0m] — reset de tekstkleurinstellingen opnieuw
: — gewoon een dubbelepunt (vanzelfsprekend!)
[ 33[33m] — activeer de gele tekstkleur
W – geef de naam van de huidige map weer
[ 33[0m] — reset opnieuw de tekstkleurinstellingen
, — nog een komma (wie had dat gedacht!)
[ 33[31m] — activeer de rode tekstkleur
! — geef het nummer van de terminalopdracht weer
[ 33[0m] — vergeet niet de tekstkleurinstellingen te resetten
$ — geef “#” weer voor root en “$” voor alle anderen
n – lijnovergang. Waarom? Zodat de opdracht begint aan de linkerkant van het venster en niet vanaf de positie van het einde van de commandoprompt.
Waar de variabele te herschrijven? Het is logisch om dit te doen in ~/.bashrc.
Het uiterlijk van de prompt is alleen beperkt door je fantasie. In principe staat niets je in de weg om met de hierboven beschreven hulpmiddelen de commandoprompt te maken in de vorm van een kerstboom. Echter, zo’n prompt zal erg onhandig zijn en het werken zal echt niet gemakkelijker worden. De kerstboom kan simpelweg boven de commandoprompt worden weergegeven bij het inloggen (we moeten toch ~/.bashrc bewerken). Ga ervoor! En bedankt voor je aandacht.

What else useful can you read in the blog
→
→
→
→
→
Subscribe to our -kanaal om de nieuwste artikelen niet te missen! We schrijven niet vaker dan twee keer per week en uitsluitend over relevante onderwerpen. Ook willen we erop wijzen dat de zakelijke cloudprovider Cloud4Y de actie 'Cloud FZ-152 voor de prijs van een gewone' is gestart. U kunt uw aanvraag indienen .
Bron: habr.com
