Kerstboom op de opdrachtregel

Het nieuwe jaar komt eraan, ik wil niet meer aan serieus werk denken.

Iedereen probeert iets te versieren voor de vakantie: thuis, op kantoor, op de werkplek... Laten we ook iets versieren! Bijvoorbeeld een opdrachtregelprompt. Tot op zekere hoogte is de commandoregel ook een werkplek.

In sommige distributies is het al “versierd”:

Kerstboom op de opdrachtregel

In andere gevallen is het grijs en onopvallend:

Kerstboom op de opdrachtregel

En we kunnen het bijvoorbeeld als volgt doen:

Kerstboom op de opdrachtregel

Uiteraard hebben alle markers verschillende smaken en kleuren. Als een dergelijke kleuring u plakkerig en ongepast lijkt, weet dan dat dit standpunt alle recht op leven heeft. En als je er ook nog een beetje nieuwjaarssfeer aan wilt toevoegen, lees dan verder voor een kort nieuwjaarsartikel van Cloud4Y.

Eerst zal ik uitleggen hoe de terminaluitvoer ‘gekleurd’ is. Dit gebeurt met behulp van escape-reeksen. Of preciezer: de besturingscodereeksen van de ANSI/VT100-terminal. Wat automatisch betekent dat uw terminalemulator deze standaard moet ondersteunen, anders gebeurt het nieuwjaarswonder niet. En ja, er wordt aangenomen dat $SHELL jouw bash is.

Deze commando's worden escape-reeksen genoemd omdat er aan het begin van elk commando een ASCII-teken 'escape' staat. Er zijn veel besturingssequenties en deze maken het bijvoorbeeld mogelijk om terminalinstellingen weer te geven, de weergave en beweging van de cursor te besturen, het lettertype te wijzigen, tekst te verwijderen en te verbergen. We zullen er een kiezen uit de vele mogelijkheden: de kleur van de tekst en de achtergrond veranderen.

Voer de codereeks uit *ESC*[{attr1};...;{attrn}m
Als symbool Ontsnappen de octale vorm wordt gebruikt, dat wil zeggen 33. Wat de attributen betreft, volgt hier een korte lijst met mogelijke waarden:

0 Reset alle attributen
1 Helder (verhoogde helderheid)
2 Afm
4 Laag streepje
5 Knipperen
7 Achteruit
8 Verborgen (tekst verbergen)

Voorgrondkleuren (penkleur, tekst wordt in deze kleur weergegeven):
30 Zwart
31 Rood
32 Groente
33 Geel
34 Blauw
35 Magenta (magenta)
36 Cyaan (blauw)
37 Wit

Achtergrondkleuren (papierkleur of achtergrondkleur):
40 Zwart
41 Rood
42 Groente
43 Geel
44 Blauw
45 Magenta (magenta)
46 Cyaan (blauw)
47 Wit

Merk op dat als u nu een opdracht geeft in de terminal: echo 33[0;31mнекоторый текст 33[0m’

... dan krijg je voorspelbaar monochrome gobbledygook bij de uitvoer:

Kerstboom op de opdrachtregel

Waarom? Omdat het nodig was om de geavanceerde mogelijkheden van het echo-commando te gebruiken. Het is voldoende om één sleutel toe te voegen: echo -e ‘ 33[0;31mнекоторый текст 33[0m’

De uitvoer ziet er nu correct uit:

Kerstboom op de opdrachtregel

We hebben de kleur van de uitvoer naar de terminal geregeld. Laten we nu kijken hoe we de opdrachtprompt kunnen inkleuren.

Dit wordt gedaan door de PS1-variabele te wijzigen. De variabele is verantwoordelijk voor de opdrachtregelprompt. Het uiterlijk kan ook worden gewijzigd, inclusief het gebruik van ontsnappingssequenties. Maar er is een klein verschil: je moet de reeks beginnen met het symbool “[”, en eindig met het symbool “]”, anders wordt het naar de terminal gestuurd.

Alle mogelijke commandoreeksen worden in detail beschreven in de bash-handleiding, dus ik nodig lezers uit om zelf te kiezen wat ze het liefst zien op de opdrachtregelprompt. Als voorbeeld geef ik mijn waarde voor 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 vreselijke spreuk ontcijferen:

[ 33[34;1m] — schakel de helderblauwe (tweede attribuut) lettertypekleur in
t – weergave van de huidige tijd in het formaat HH: MM: SS
[ 33[0m] - reset de kleurinstellingen van het lettertype
, - gewoon een komma (onverwacht, toch?)
[ 33[32m] - schakel de groene letterkleur in
u@l@h – de gebruikersnaam, het terminalapparaatnummer en de korte hostnaam weergeven, gescheiden door het “@”-symbool
[ 33[0m] — reset de instellingen voor de lettertypekleur opnieuw
: - gewoon een dubbele punt (plotseling!)
[ 33[33m] - schakel de gele lettertypekleur in
W – de naam van de huidige map weergeven
[ 33[0m] — reset de instellingen voor de lettertypekleur opnieuw
, - nog een komma (wie had dat gedacht!)
[ 33[31m] - schakel de rode letterkleur in
! — geef het opdrachtnummer weer in de terminal
[ 33[0m] - vergeet niet de instellingen voor de lettertypekleur opnieuw in te stellen
$ — druk “#” af voor root en “$” voor alle anderen
n - lijnvertaling. Waarvoor? Zodat de opdracht aan de linkerrand van het venster begint, in plaats van aan het einde van de opdrachtregelprompt.

Waar moet ik een variabele opnieuw definiëren? De meest logische plaats om dit te doen is ~/.bashrc.

Het uiterlijk van de uitnodiging wordt alleen beperkt door uw verbeeldingskracht. In principe belet niets u om met de hierboven beschreven tools een opdrachtregelprompt in de vorm van een kerstboom te maken. Het is waar dat zo'n uitnodiging erg omslachtig zal zijn, en het werk zal zeker niet handiger worden. De kerstboom kan eenvoudigweg boven de opdrachtregelprompt worden weergegeven wanneer u inlogt (we moeten ~/.bashrc nog bewerken). Ga ervoor! En bedankt voor uw aandacht.

Kerstboom op de opdrachtregel

Wat lees je nog meer op de blog? Cloud4Y

Top instellen in GNU/Linux
Pentesters die voorop lopen op het gebied van cyberbeveiliging
Startups die kunnen verrassen
Zijn kussens nodig in een datacenter?
Het huis dat een robot heeft gebouwd

Abonneer u op onze Telegram-channel zodat je het volgende artikel niet mist! We schrijven niet vaker dan twee keer per week en alleen voor zaken. We herinneren u er ook aan dat de zakelijke cloudprovider Cloud4Y de promotie “FZ-152 Cloud tegen de normale prijs” heeft gelanceerd. Je kunt solliciteren tot 31 dec.

Bron: www.habr.com

Voeg een reactie