Zoeken op website

Hoe Bash-kleuren en inhoud aan te passen in Linux Terminal Prompt


Tegenwoordig is Bash de standaardshell in de meeste (zo niet alle) moderne Linux-distributies. Het is je echter misschien opgevallen dat de tekstkleur in de terminal en de promptinhoud per distributie kunnen verschillen.

Aanbevolen leesmateriaal: 5 meest gebruikte open source-shells voor Linux

Als je je hebt afgevraagd hoe je dit kunt aanpassen voor een betere toegankelijkheid of gewoon voor een gril, lees dan verder – in dit artikel leggen we uit hoe je dat kunt doen.

De PS1 Bash-omgevingsvariabele

De opdrachtprompt en het uiterlijk van de terminal worden bepaald door een omgevingsvariabele genaamd PS1. Volgens de manpagina van Bash vertegenwoordigt PS1 de primaire promptstring die wordt weergegeven wanneer de shell klaar is om een commando te lezen.

De toegestane inhoud in PS1 bestaat uit verschillende speciale tekens met backslash-escape waarvan de betekenis wordt vermeld in het PROMPTING-gedeelte van de manpagina.

Laten we ter illustratie de huidige inhoud van PS1 in ons systeem weergeven (in jouw geval kan dit enigszins afwijken):

echo $PS1

[\u@\h \W]$

We zullen nu uitleggen hoe je PS1 kunt aanpassen aan onze behoeften.

Het PS1-formaat aanpassen

Volgens de PROMPTING-sectie op de manpagina is dit de betekenis van elk speciaal teken:

  1. \u: de gebruikersnaam van de huidige gebruiker.
  2. \h: de hostnaam tot aan de eerste punt (.) in de Fully-Qualified Domain Name.
  3. \W: de basisnaam van de huidige werkmap, met $HOME afgekort met een tilde (~).
  4. \$: Als de huidige gebruiker root is, geef dan # en anders $ weer.

We kunnen bijvoorbeeld overwegen om \! toe te voegen als we het geschiedenisnummer van het huidige commando willen weergeven, of \H als we de FQDN willen weergeven in plaats van de korte servernaam.

In het volgende voorbeeld zullen we beide in onze huidige omgeving importeren door deze opdracht uit te voeren:

PS1="[\u@\H \W \!]$"

Wanneer u op Enter drukt, ziet u dat de promptinhoud verandert, zoals hieronder weergegeven. Vergelijk de prompt voor en na het uitvoeren van de bovenstaande opdracht:

Laten we nu nog een stap verder gaan en de kleur van de gebruiker en hostnaam in de opdrachtprompt wijzigen – zowel de tekst als de omringende achtergrond.

Eigenlijk kunnen we 3 aspecten van de prompt aanpassen:

Text Format Foreground (text) color Background color
0: normal text 30: Black 40: Black
1: bold 31: Red 41: Red
4: Underlined text 32: Green 42: Green
33: Yellow 43: Yellow
34: Blue 44: Blue
35: Purple 45: Purple
36: Cyan 46: Cyan
37: White 47: White

We gebruiken het speciale teken \e aan het begin en een m aan het einde om aan te geven dat wat volgt een kleurenreeks is.

In deze reeks worden de drie waarden (achtergrond, formaat en voorgrond) gescheiden door komma's (als er geen waarde wordt opgegeven, wordt uitgegaan van de standaardwaarde) .

Voorgesteld lezen: Leer Bash Shell-scripting in Linux

Omdat de waardebereiken verschillend zijn, maakt het ook niet uit welke (achtergrond, formaat of voorgrond) u eerst opgeeft.

De volgende PS1 zorgt er bijvoorbeeld voor dat de prompt verschijnt in geel onderstreepte tekst met een rode achtergrond:

PS1="\e[41;4;33m[\u@\h \W]$ "

Hoe goed het er ook uitziet, deze aanpassing blijft alleen geldig voor de huidige gebruikerssessie. Als u uw terminal sluit of de sessie afsluit, gaan de wijzigingen verloren.

Om deze wijzigingen permanent te maken, moet u de volgende regel toevoegen aan ~/.bashrc of ~/.bash_profile, afhankelijk van uw distributie:

PS1="\e[41;4;33m[\u@\h \W]$ "

Voel je vrij om met de kleuren te spelen om te ontdekken wat het beste bij je past.

Samenvatting

In dit artikel hebben we uitgelegd hoe u de kleur en inhoud van uw Bash-prompt kunt aanpassen. Als je vragen of suggesties hebt over dit bericht, kun je het onderstaande reactieformulier gebruiken om ons te bereiken. Wij horen graag van u!