Startpagina » hoe » Hoe u uw Bash-prompt kunt aanpassen (en inkleuren)

    Hoe u uw Bash-prompt kunt aanpassen (en inkleuren)

    De meeste Linux-distributies configureren de Bash-prompt om er ongeveer zo uit te zien gebruikersnaam @ hostnaam: directory $ . Maar je kunt de Bash-prompt configureren om te bevatten wat je maar wilt, en zelfs kiezen welke kleuren je wilt.

    De voorbeeldstappen hier werden 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 is opgeslagen

    Uw Bash-promptconfiguratie wordt opgeslagen in het .bashrc-bestand van uw gebruikersaccount ~ / .Bashrc. Dus, als je gebruikersnaam bob is, is het bestand op /home/bob/.bashrc.

    U kunt het bestand openen om de huidige Bash-variabele te bekijken. We gebruiken nano als onze voorbeeldteksteditor, maar je kunt ook vi, emacs of een andere teksteditor gebruiken waar je je prettig bij voelt. Open een Terminal en voer uit:

    nano ~ / .bashrc

    Blader omlaag naar de PS1 = sectie. De eerste variabele ziet er nogal gecompliceerd uit omdat deze kleurinformatie bevat, we zullen dat later uitleggen. De tweede variabele, zonder kleurinformatie, luidt als volgt:

    $ Debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $

    Dit is nog steeds een beetje gecompliceerd vanwege de $ Debian_chroot: + ($ debian_chroot) bits. Deze vertellen gewoon Bash om je te laten weten of je een Debian chroot-omgeving gebruikt en deze wordt normaal niet getoond. Negeer deze, hier is de standaardstructuur van de Bash-promptvariabele:

    \ U @ \ h: \ w \ $

    \ u geeft uw gebruikersnaam aan, @ geeft het @ -teken aan, \ h geeft de hostnaam aan (computernaam), : geeft het: karakter aan, \ w geeft de werkdirectory aan, en \ $ geeft een $ aan als u een normaal gebruikersaccount bent of # als u root bent. Dus, alles bij elkaar brengend, krijg je gebruikersnaam @ hostnaam: working_directory $.

    Om uw Bash-prompt te wijzigen, hoeft u alleen maar de speciale tekens in de PS1-variabele toe te voegen, te verwijderen of opnieuw in te delen. Maar er zijn veel meer variabelen die u kunt gebruiken dan de standaard variabelen.

    Verlaat de teksteditor voor nu - in nano, druk op Ctrl + X om af te sluiten. We laten je zien hoe je kunt experimenteren met variabelen voordat je daadwerkelijk een nieuwe in je .bashrc-bestand schrijft.

    Hoe een Custom Bash-prompt te maken

    Uw Bash-promptconfiguratie wordt opgeslagen in de PS1-variabele. Als u de inhoud van de PS1-variabele in een nieuwe variabele wilt opslaan, voert u de volgende opdracht uit:

    STANDAARD = $ PS1

    U kunt de PS1-variabele nu instellen op verschillende waarden om te experimenteren. Bijvoorbeeld, de eerste regel hier zou uw prompt instellen op een basis "user $" prompt, terwijl de tweede uw prompt zou instellen op een basis "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 u deze standaardinstellingen eerder hebt opgeslagen. Houd er rekening mee dat alle wijzigingen die u hier aanbrengt, slechts tijdelijk zijn voor de huidige Bash-sessie, zodat u zich altijd kunt afmelden en weer kunt aanmelden of het terminalvenster kunt sluiten en weer kunt 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 dat u zich hoeft af te melden of een venster te sluiten.

    U kunt tekens of tekst aan de variabele toevoegen. Dus om de standaardprompt te prefixen met "Hello World", zou u kunnen gebruiken:

    PS1 = "Hallo wereld \ u @ \ h: \ w \ $"

    Nu je de basis hebt, hoef je alleen maar te weten wat alle speciale personages zijn. Je zult waarschijnlijk niet om veel van deze dingen geven, maar hier is de volledige lijst zoals deze in de handleiding van Bash staat:

    • Een belkarakter: \een
    • De datum in het formaat "Weekday Month Date" (bijv. "Tue May 26"): \ d
    • Het formaat wordt doorgegeven aan strftime (3) en het resultaat wordt ingevoegd in de promptstring; een leeg formaat resulteert in een locale-specifieke tijdsrepresentatie. De beugels zijn vereist: \ D format
    • Een escape-personage: \ e
    • De hostnaam, tot de eerste '.': \ h
    • De hostnaam: \ H
    • Het aantal taken dat momenteel door de shell wordt beheerd: \ j
    • De basenaam van de terminalapparaatnaam van de shell: \ l
    • Een nieuwe regel: \ n
    • Een carriage return: \ r
    • De naam van de shell, de basename van $ 0 (het gedeelte na de laatste schuine streep): \ s
    • De tijd, in 24-uurs UU: MM: SS-indeling: \ t
    • De tijd, in 12 uur HH: MM: SS-indeling: \ T
    • De tijd, in 12-uurs am / pm-indeling: \ @
    • De tijd, in 24-uur HH: MM-indeling: \EEN
    • De gebruikersnaam van de huidige gebruiker: \ u
    • De versie van Bash (bijvoorbeeld 2,00): \ v
    • De release van Bash, versie + patchniveau (bijv. 2.00.0): \ V
    • De huidige werkdirectory, met $ HOME afgekort met een tilde (gebruikt de variabele $ PROMPT_DIRTRIM): \ w
    • De basenaam van $ PWD, met $ HOME afgekort met een tilde: \ w
    • Het geschiedenisnummer van deze opdracht: \!
    • Het commandienummer van deze opdracht: \ #
    • Als de effectieve uid 0, #, anders $ is: \ $
    • Het teken waarvan de ASCII-code de octale waarde nnn is: \ nnn
    • Een backslash: \\
    • Begin een reeks niet-afdrukbare tekens. Dit zou kunnen worden gebruikt om een ​​terminalcontrolesequentie in de prompt in te bedden: \ [
    • Een reeks niet-afdrukbare tekens beëindigen: \]

    Dus als u de datum en tijd aan uw Bash-prompt wilt toevoegen en de werkmap op een tweede regel op commando wilt plaatsen, kunt u de volgende constructie gebruiken:

    PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"

    De vierkante haken zijn hier helemaal niet nodig, maar helpen visueel de zaken stuk te maken en de lijn leesbaarder te maken. Zoals we eerder hebben besproken, kunt u tekst of normale tekens toevoegen aan de variabele die u leuk vindt, dus u kunt alles wat voor u werkt gebruiken.

    Er is nog een krachtiger truc die je moet weten: je kunt de uitvoer van elke opdracht aan de prompt toevoegen. Wanneer de prompt verschijnt, voert Bash de opdracht uit en vult de huidige informatie in. Om dit te doen, neemt u gewoon elke opdracht op die u tussen twee wilt uitvoeren ' karakters. Dat is geen apostrof - dat is het ernstige accent dat boven de Tab-toets op je toetsenbord verschijnt.

    Laten we bijvoorbeeld zeggen dat u de Linux-kernelversie in de prompt wilt bekijken. U kunt een regel als de volgende gebruiken:

    PS1 = "\ u @ \ h on 'uname -s -r' \ w \ $"

    Als een ander voorbeeld, laten we zeggen dat je de uptime van het systeem en het gemiddelde van de belasting wilt bekijken, zoals weergegeven door de uptime commando. U 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 met verschillende speciale tekens en opdrachten om uw ideale opdrachtprompt samen te stellen.

    Hoe u kleuren aan uw Bash Prompt kunt toevoegen

    Zodra u de prompt van uw voorkeur hebt bepaald, kunt u er kleuren aan toevoegen. Dit is eigenlijk heel simpel, maar het laat de variabele er rommelig en ingewikkeld uitzien als je niet begrijpt waar je naar kijkt.

    De standaardvulvariabele voor standaardkleuren van eerder was bijvoorbeeld:

    $ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Of, nogmaals, de debian_chroot-bits verwijderen:

    \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Dit is eigenlijk alleen het \ U @ \ h: \ w $ variabele van vroeger, maar met kleurinformatie. Echt waar, we kunnen het opsplitsen in een paar secties:

    \ [\ 033 [01; 32m \]\ U @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $

    Het eerste deel is het \ U @ \ h bit, voorafgegaan door kleurinformatie die deze groen maakt. De tweede is de : karakter, voorafgegaan door kleurinformatie die elke kleur verwijdert. De derde is de \ w bit, voorafgegaan door kleurinformatie die de kleur blauw maakt. De vierde is de \ $ bit, voorafgegaan door kleurinformatie die elke kleur verwijdert.

    Zodra u begrijpt hoe u eigen kleurtags kunt bouwen, kunt u de kleuren die u leuk vindt toevoegen aan de delen van uw Bash-prompt die u leuk vindt.

    Dit is wat u moet weten: u moet de volledige kleurcodegegevens opnemen tussen de \ [  en \] karakters. In de tag moet je beginnen met een van beide \ 033 [ of \ E [ om aan Bash aan te geven dat dit kleurgegevens zijn. Beide \ 033 [ en \ E [ hetzelfde doen. \ E [ is korter dus misschien handiger in gebruik, maar we zullen gebruiken \ 033 [ hier omdat het overeenkomt met wat standaard wordt gebruikt. Aan het einde van de tag moet je eindigen met m \ om het einde van een kleurtag aan te geven.

    Om dat te doorbreken, hier is hoe elke kleurtag er uit zal zien. Het enige verschil is de informatie die u in plaats van KLEUR toevoegt om de werkelijke kleur te definiëren:

    \ [\ 033 [KLEURm \]

    Met Bash kunt u de kleur van voorgrondtekst wijzigen, attributen zoals "vet" of "onderstrepen" toevoegen aan de tekst 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 dit gebruiken \ [\ 033 [32m \]  voor paarse tekst.

    U kunt ook een attribuut voor de tekst opgeven. Dit kenmerk moet vóór het kleurnummer worden toegevoegd, gescheiden door een puntkomma (;). Tekst met deze kenmerken ziet er anders uit in verschillende terminal-emulators.

    Dit zijn de waarden voor tekstkenmerken:

    • Normale tekst: 0
    • Gewaagde of lichte tekst: 1 (afhankelijk van de terminalemulator.)
    • Gedimde tekst: 2
    • Onderstreepte tekst: 4
    • Knipperende tekst: 5 (Dit werkt niet in de meeste eindemulators.)
    • Omgekeerde tekst: 7 (hiermee worden de voorgrond- 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 tekstattribuut eigenlijk niet 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 deze gebruiken \ [\ 033 [1; 31m \] voor vetgedrukte rode tekst.

    U kunt ook een achtergrondkleur opgeven, 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

    Bijvoorbeeld, omdat een blauwe achtergrond code 44 is, \ [\ 033 [44m \] zou een blauwe achtergrond specificeren.

    U kunt zowel voorgrond- als achtergrondkleurlabels opgeven. Bijvoorbeeld, 42 vertegenwoordigt een groene achtergrond en 31 vertegenwoordigt rode tekst. Dus om de standaardprompt rode tekst op een groene achtergrond te maken, gebruikt u:

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "

    We geven hier alleen een enkele achtergrondkleur en dan een enkele voorgrondkleur op, die begint aan het begin van de prompt en die wordt toegepast op alle tekst in de prompt. U kunt echter zoveel kleurtags opgeven als u wilt in de variabele om verschillende secties van uw prompt in te kleuren zoals u wilt.

    De achtergrondkleuren en voorgrondkleuren blijven voorbij de aanwijzing, tenzij u de kleurcode opgeeft 00 de kleurinformatie wissen. U kunt deze tag ook binnen de variabele gebruiken om de opmaak opnieuw in te stellen naar de standaardwaarde ergens in uw prompt. Met de volgende regel zou bijvoorbeeld alle kleuren vóór de \ $ karakter.

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "

    Hoe u uw nieuwe standaardprompt kunt instellen

    Als je klaar bent met het experimenteren met kleuren, zou je een Bash-prompt moeten hebben die je leuk vindt in de huidige sessie. Maar je wilt waarschijnlijk die nieuwe prompt permanent maken, zodat deze automatisch wordt gebruikt in al je Bash-sessies.

    Om dit te doen, hoeft u alleen de inhoud van de PS1-variabele in het .bashrc-bestand te wijzigen, waar we eerder naar hebben gekeken.

    Open het .bashrc-bestand in uw gewenste teksteditor, zoals het volgende:

    nano ~ / .bashrc

    Blader naar beneden en zoek het gedeelte PS1 =. Vervang gewoon de standaardvariabele door uw aangepaste variabele. Je wilt waarschijnlijk de $ Debian_chroot: + ($ debian_chroot)  bits alleen, echter, ze zullen niet verschijnen tenzij je in een chroot-omgeving bent.

    Voer je gekleurde PS1-variabele in onder de als ["$ color_prompt" = yes]; dan lijn. Voer de variabele in zonder kleuren onder de anders lijn.

    Sla het bestand op en sluit je teksteditor. Als u het bestand bijvoorbeeld in nano wilt opslaan, 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 op de terminal of door een nieuw terminalvenster te openen, ziet u uw aangepaste prompt.