De meeste Linux-distributies configureren de Bash-prompt om er ongeveer zo uit te zien
gebruikersnaam @ hostnaam: directory $
. Maar u kunt de Bash-prompt configureren om alles te bevatten wat u maar wilt, en zelfs elke gewenste kleur kiezen.
De voorbeeldstappen hier zijn uitgevoerd op Ubuntu 16.04 LTS. Het proces zou hetzelfde moeten zijn op andere Linux-distributies, hoewel de standaard Bash-prompt en -instellingen in het .bashrc-bestand een beetje anders kunnen zijn.
Waar de promptvariabele wordt opgeslagen
Uw Bash-promptconfiguratie wordt opgeslagen in het .bashrc-bestand van uw gebruikersaccount, dat zich bevindt op
~ / .bashrc
. Dus als uw gebruikersnaam bob is, staat het bestand op
/home/bob/.bashrc
.
U kunt het bestand openen om de huidige Bash-variabele te bekijken. We gebruiken nano als onze voorbeeldteksteditor, hoewel u ook wij , emacs of een andere teksteditor waarmee u vertrouwd bent. Open een terminal en voer uit:
nano ~ / .bashrc
Scrol omlaag naar het
Ψ1 =
sectie. De eerste variabele ziet er nogal ingewikkeld uit omdat deze kleurinformatie bevat. Dat zullen we later uitleggen. De tweede variabele, zonder kleurinformatie, luidt als volgt:
$ {debian_chroot:+($debian_chroot)} \ u @ \ h: \ w \ $
Dit is nog steeds een beetje ingewikkeld vanwege de
${debian_chroot:+($debian_chroot)}
stukjes. Deze vertellen Bash gewoon om u te laten weten of u een Debian chroot-omgeving gebruikt en normaal gesproken niet wordt weergegeven. Als je deze negeert, is hier de standaardstructuur van de Bash-promptvariabele:
\ u @ \ h: \ w \ $
\u
geeft uw gebruikersnaam aan,
@
geeft het @ -teken aan,
\ h
geeft de hostnaam (computernaam) aan,
:
geeft het: teken aan,
\in
geeft de werkdirectory aan, en
\$
geeft een $ aan als je een normaal gebruikersaccount hebt of # als je root bent. Dus als je dat allemaal bij elkaar zet, krijg je
gebruikersnaam @ hostnaam: werkmap $
.
Om uw Bash-prompt te wijzigen, hoeft u alleen maar de speciale tekens in de PS1-variabele toe te voegen, te verwijderen of opnieuw te rangschikken. Maar er zijn veel meer variabelen die u kunt gebruiken dan de standaardvariabelen.
Verlaat de teksteditor voorlopig - druk in nano op Ctrl + X om af te sluiten. We laten u zien hoe u met variabelen kunt experimenteren voordat u daadwerkelijk een nieuwe in uw .bashrc-bestand schrijft.
Hoe u een aangepaste bash-prompt maakt
Uw Bash-promptconfiguratie wordt opgeslagen in de PS1-variabele. Om de inhoud van de PS1-variabele op te slaan in een nieuwe variabele, voert u de volgende opdracht uit:
STANDAARD = $ PS1
U kunt nu de PS1-variabele op verschillende waarden instellen om te experimenteren. De eerste regel hier zou bijvoorbeeld uw prompt instellen op een standaard "user $" -prompt, terwijl de tweede uw prompt zou instellen op een standaard "user: working_directory $" -prompt.
PS1="\u\$ " PS1="\u:\w\$ "
Als u ooit terug wilt naar uw standaardprompt, voert u gewoon de volgende opdracht uit.
PS1 = $ STANDAARD
Bash wordt hersteld naar de standaardprompt dankzij het feit dat je die standaardinstellingen eerder hebt opgeslagen. Merk op dat alle wijzigingen die u hier aanbrengt slechts tijdelijk zijn voor de huidige Bash-sessie, dus u kunt zich altijd afmelden en weer aanmelden of het terminalvenster sluiten en opnieuw openen om terug te gaan naar uw standaardprompt. Maar de bovenstaande regel maakt het mogelijk om gemakkelijk terug te gaan naar uw standaard Bash-prompt zonder het gedoe van uitloggen of het sluiten van een venster.
U kunt willekeurige tekens of tekst aan de variabele toevoegen. Dus om de standaardprompt vooraf te laten gaan met "Hallo wereld", zou je kunnen gebruiken:
PS1="Hello World \u@\h:\w\$ "
Nu u de basis onder de knie heeft, hoeft u alleen maar te weten wat alle speciale tekens zijn. Veel hiervan interesseert u waarschijnlijk niet, maar hier is de volledige lijst zoals deze wordt weergegeven in de Bash-handleiding :
-
Een belkarakter:
\een -
De datum, in het formaat 'Weekdag Maand Datum' (bijvoorbeeld 'Di 26 mei'):
\ d -
Het formaat wordt doorgegeven aan strftime (3) en het resultaat wordt in de promptreeks ingevoegd; een leeg formaat resulteert in een locale-specifieke tijdweergave. De beugels zijn vereist:
\ D{format} -
Een ontsnappingskarakter:
\ is -
De hostnaam, tot en met de eerste ‘.’:
\ h -
De hostnaam:
\ H -
Het aantal banen dat momenteel door de shell wordt beheerd:
\ j -
De basisnaam van de naam van het terminalapparaat van de shell:
\ l -
Een nieuwe regel:
\ n -
Een regelterugloop:
\ r -
De naam van de shell, de basisnaam van $ 0 (het gedeelte dat volgt op de laatste schuine streep):
\ s -
De tijd, in 24-uurs indeling UU: MM: SS:
\t -
De tijd, in 12-uurs indeling UU: MM: SS:
\T -
De tijd, in 12-uurs am / pm-indeling:
\@ -
De tijd, in 24-uurs UU: MM-indeling:
\EEN -
De gebruikersnaam van de huidige gebruiker:
\u -
De versie van Bash (bijvoorbeeld 2.00):
ev -
De release van Bash, versie + patchlevel (bijv.2.00.0):
EV -
De huidige werkdirectory, met $ HOME afgekort met een tilde (gebruikt de $ PROMPT_DIRTRIM variabele):
\in -
De basisnaam van $ PWD, met $ HOME afgekort met een tilde:
\IN -
Het geschiedenisnummer van deze opdracht:
\! -
Het opdrachtnummer van deze opdracht:
\# -
Als de effectieve uid 0, # is, anders $:
\$ -
Het teken waarvan de ASCII-code de octale waarde nnn is:
\ nnn -
Een backslash:
\\ -
Begin een reeks niet-afdrukbare tekens. Dit kan worden gebruikt om een terminalbesturingsreeks in de prompt in te bedden:
\[ -
Beëindig een reeks niet-afdrukbare tekens:
\]
Dus als je de datum en tijd aan je Bash-prompt wilt toevoegen en de werkmap op commando op een tweede regel wilt zetten, kun je de volgende constructie gebruiken:
PS1="[\d \t] \u@\h\n\w\$ "
De vierkante haken hier zijn helemaal niet nodig, maar helpen de zaken visueel op te splitsen en de regel gemakkelijker leesbaar te maken. Zoals we eerder hebben besproken, kun je elke gewenste tekst of normale tekens aan de variabele toevoegen, dus voel je vrij om te gebruiken wat voor jou werkt.
Er is nog een krachtigere truc die u moet weten: u kunt de uitvoer van elke opdracht aan de prompt toevoegen. Telkens wanneer de prompt verschijnt, zal Bash de opdracht uitvoeren en de huidige informatie invullen. Om dit te doen, neemt u gewoon een commando op dat u tussen twee wilt uitvoeren
`
karakters. Dat is geen apostrof, dat is het ernstige accent dat boven de Tab-toets op je toetsenbord wordt weergegeven.
Stel dat u bijvoorbeeld de Linux-kernelversie in de prompt wilt zien. Je zou een regel als de volgende kunnen gebruiken:
PS1 = "\ u @ \ h op ʻuname -s -r` \ w \ $"
Laten we als ander voorbeeld zeggen dat u de uptime en het laadgemiddelde van het systeem wilt zien, zoals weergegeven door de
uptime
opdracht. Je zou de volgende constructie kunnen gebruiken, die de uptime op een eigen regel zet voor de rest van de prompt.
PS1="(`uptime`)\n\u@\h:\w$ "
Experimenteer gerust met verschillende speciale tekens en opdrachten om uw ideale opdrachtprompt samen te stellen.
Hoe u kleuren aan uw bash-prompt kunt toevoegen
Als u eenmaal uw gewenste prompt heeft bepaald, kunt u er kleuren aan toevoegen. Dit is eigenlijk heel eenvoudig, maar het zorgt ervoor dat de variabele er erg rommelig en ingewikkeld uitziet als je niet begrijpt waar je naar kijkt.
De standaardvariabele voor kleurprompts van eerder was bijvoorbeeld:
$ {debian_chroot:+($debian_chroot)} \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Of de debian_chroot-bits nogmaals verwijderen:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Dit is eigenlijk gewoon de
\ u @ \ h: \ w $
variabel van vroeger, maar met kleurinformatie. Echt, we kunnen het opsplitsen in een paar secties:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\in\[\033[00m\]\$
Het eerste deel is het
\ u @ \ h
bit, voorafgegaan door kleurinformatie waardoor het groen wordt. De tweede is de
:
karakter, voorafgegaan door kleurinformatie die elke kleur verwijdert. De derde is de
\in
bit, voorafgegaan door kleurinformatie waardoor het blauw wordt. De vierde is de
\$
bit, voorafgegaan door kleurinformatie die elke kleur verwijdert.
Als u eenmaal begrijpt hoe u zelf kleurlabels kunt maken, kunt u elke gewenste kleur toevoegen aan de secties van uw Bash-prompt die u maar wilt.
Dit is wat u moet weten: u moet de volledige kleurcodegegevens tussen de
\[
en
\] karakter
s. Binnen de tag moet u met een van beide beginnen
\033[
of
\ is [
om aan Bash aan te geven dat dit kleurinformatie is. Beide
\033[
en
\ is [
hetzelfde doen.
\ is [
is korter, dus wellicht handiger in het gebruik, maar we zullen gebruiken
\033[
hier omdat het overeenkomt met wat standaard wordt gebruikt. Aan het einde van de tag moet u eindigen met
m \
om het einde van een kleurtag aan te geven.
Om dat op te splitsen, hier is hoe elke kleurtag eruit zal zien. Het enige verschil is de informatie die u toevoegt in plaats van COLOR om de werkelijke kleur te definiëren:
\[\033[KLEURm \]
Met Bash kunt u de kleur van de voorgrondtekst wijzigen, attributen zoals "vet" of "onderstrepen" aan de tekst toevoegen en een achtergrondkleur instellen.
Dit zijn de waarden voor voorgrondtekst:
- Zwart: 30
- Blauw: 34
- Cyaan: 36
- Groen: 32
- Paars: 35
- Rood: 31
- Wit: 37
- Geel: 33
Omdat paarse tekst bijvoorbeeld kleurcode 32 is, zou u
\[\033[
32
m \]
voor paarse tekst.
U kunt ook een attribuut voor de tekst specificeren. Dit attribuut moet worden toegevoegd vóór het kleurnummer, gescheiden door een puntkomma (;). Tekst met deze attributen ziet er in verschillende terminalemulators anders uit.
Dit zijn de waarden voor tekstattributen:
- Normale tekst: 0
- Vetgedrukte of lichte tekst: 1 (afhankelijk van de terminalemulator.)
- Dim tekst: 2
- Onderstreepte tekst: 4
- Knipperende tekst: 5 (dit werkt niet in de meeste terminalemulators.)
- Omgekeerde tekst: 7 (hiermee worden de voor- en achtergrondkleuren omgekeerd, zodat u zwarte tekst op een witte achtergrond ziet als de huidige tekst witte tekst op een zwarte achtergrond is.)
- Verborgen tekst: 8
U hoeft het normale tekstkenmerk niet echt op te nemen. Dat is hoe dan ook de standaard.
Omdat rode tekst bijvoorbeeld code 31 is en vetgedrukte tekst code 1 is, zou u
\[\033[
1;31
m \]
voor vetgedrukte rode tekst.
U kunt ook een achtergrondkleur specificeren, maar u kunt geen kenmerk aan een achtergrondkleur toevoegen.
Dit zijn de waarden voor achtergrondkleuren:
- Zwarte achtergrond: 40
- Blauwe achtergrond: 44
- Cyaan achtergrond: 46
- Groene achtergrond: 42
- Paarse achtergrond: 45
- Rode achtergrond: 41
- Witte achtergrond: 47
- Gele achtergrond: 43
Omdat een blauwe achtergrond bijvoorbeeld code 44 is,
\[\033[
44
m \]
zou een blauwe achtergrond specificeren.
U kunt zowel voorgrond- als achtergrondkleurtags specificeren. 42 vertegenwoordigt bijvoorbeeld een groene achtergrond en 31 vertegenwoordigt rode tekst. Dus om ervoor te zorgen dat de standaardprompt rode tekst op een groene achtergrond wordt, gebruik je:
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
We specificeren hier slechts een enkele achtergrondkleur en vervolgens een enkele voorgrondtekstkleur, die begint bij het begin van de prompt en wordt toegepast op alle tekst in de prompt. U kunt echter zoveel kleurlabels specificeren als u wilt in de variabele om verschillende secties van uw prompt te kleuren zoals u dat wilt.
De achtergrond- en voorgrondtekstkleuren blijven voorbij de prompt gaan, tenzij u kleurcode 00 opgeeft om de kleurinformatie te wissen. U kunt deze tag ook binnen de variabele gebruiken om de opmaak ergens in uw prompt terug te zetten naar de standaardwaarde. De volgende regel zou bijvoorbeeld alle kleuren beëindigen vóór de
\$
karakter.
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Hoe u uw nieuwe standaardprompt instelt
Als je klaar bent met experimenteren met kleuren, zou je een Bash-prompt moeten hebben die je leuk vindt in de huidige sessie. Maar u wilt die nieuwe prompt waarschijnlijk permanent maken, zodat deze automatisch in al uw Bash-sessies wordt gebruikt.
Om dit te doen, hoef je alleen maar de inhoud van de PS1-variabele in het .bashrc-bestand te wijzigen, dat we eerder hebben bekeken.
Open het .bashrc-bestand in uw favoriete teksteditor, zoals:
nano ~ / .bashrc
Scroll naar beneden en zoek de sectie PS1 =. Vervang gewoon de standaardvariabele door uw aangepaste variabele. U wilt waarschijnlijk het
${debian_chroot:+($debian_chroot)}
bits alleen - ze verschijnen sowieso niet, tenzij u zich in een chroot-omgeving bevindt.
Voer je gekleurde PS1-variabele in onder de
als [ "$color_prompt" = yes ]; vervolgens
lijn. Voer de variabele zonder kleuren in onder de
anders
lijn.
Sla het bestand op en sluit uw teksteditor. Om het bestand bijvoorbeeld in nano op te slaan, drukt u op Ctrl + O, drukt u op Enter en drukt u vervolgens op Ctrl + X om af te sluiten.
De volgende keer dat u een nieuwe Bash-shell start, bijvoorbeeld door u aan te melden bij de terminal of door een nieuw terminalvenster te openen, ziet u uw aangepaste prompt.