Početna » kako da » Kako prilagoditi (i obojiti) svoj Bash Prompt

    Kako prilagoditi (i obojiti) svoj Bash Prompt

    Većina Linux distribucija konfigurira Bash prompt da izgleda nešto slično username @ hostname: katalog $ . Ali možete konfigurirati Bash prompt kako bi sadržavao što god želite, pa čak i odabrali željene boje.

    Primjeri koraka ovdje su izvedeni na Ubuntu 16.04 LTS. Proces bi trebao biti isti na drugim distribucijama Linuxa, iako je zadana Bash prompt i postavke u .bashrc datoteci možda nešto drugačije.

    Gdje je spremljena Promptna varijabla

    Konfiguracija Bash prompta pohranjena je u datoteci .bashrc vašeg korisničkog računa, koja je na ~ / .Bashrc. Dakle, ako je vaše korisničko ime bob, datoteka je na /home/bob/.bashrc.

    Datoteku možete otvoriti da biste vidjeli trenutnu Bash varijablu. Koristit ćemo nano kao primjer za uređivanje teksta, iako možete koristiti i vi, emacs ili bilo koji drugi uređivač teksta koji vam odgovara. Otvorite terminal i pokrenite:

    nano ~ / .bashrc

    Pomaknite se dolje do PS1 = odjeljak. Prva varijabla izgleda prilično složeno jer uključuje informacije o boji - to ćemo kasnije objasniti. Druga varijabla, bez informacija o boji, glasi kako slijedi:

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

    To je još uvijek malo komplicirano zbog $ Debian_chroot: + ($ debian_chroot) komadići. Ovo samo govori Bashu da vas obavijesti ako koristite Debian chroot okruženje i obično se neće prikazati. Ignorirajući ih, evo zadane strukture varijable Bash prompta:

    \ U '\ h: \ w \ $

    \ z označava vaše korisničko ime, @ označava znak @, \ h označava naziv hosta (naziv računala), : označava znak:, \ w označava radni direktorij i \ $ označava $ ako ste normalan korisnički račun ili # ako ste root. Dakle, stavljajući to sve zajedno, dobivate korisničko ime @ hostname: working_directory $.

    Da biste promijenili Bash prompt, morate samo dodati, ukloniti ili preurediti posebne znakove u PS1 varijabli. No, postoji mnogo više varijabli koje možete koristiti od zadanih.

    Ostavite uređivač teksta za sada-in nano, pritisnite Ctrl + X za izlaz. Pokazat ćemo vam kako eksperimentirati s varijablama prije pisanja novog u svoju .bashrc datoteku.

    Kako stvoriti prilagođeni Bash Prompt

    Konfiguracija Bash prompta pohranjena je u PS1 varijabli. Da biste spremili sadržaj PS1 varijable u novu varijablu, pokrenite sljedeću naredbu:

    Default = $ PS1

    Sada možete postaviti varijablu PS1 na različite vrijednosti za eksperiment. Na primjer, prvi red ovdje postavit će vaš upit na osnovni upitnik "korisnik $", dok bi drugi postavio vaš upit na osnovni upit "korisnik: radni_direktorij $".

    PS1 = "u: w:" \ t

    Ako se ikada želite vratiti na zadani upit, pokrenite sljedeću naredbu.

    PS1 = $ DEFAULT

    Bash će se vratiti na zadani redak zahvaljujući činjenici da ste ranije pohranili zadane postavke. Imajte na umu da su sve promjene koje napravite ovdje samo privremene za trenutnu Bash sesiju, tako da se uvijek možete odjaviti i ponovno prijaviti ili zatvoriti te ponovno otvoriti prozor terminala da biste se vratili na zadani upit. No, gornja linija omogućuje jednostavno vraćanje na zadanu Bash brzinu bez poteškoća s odjavom ili zatvaranjem prozora.

    U varijablu možete dodati bilo koji znak ili tekst. Dakle, za prefiks podrazumijevanog prompta s "Hello World", možete koristiti:

    PS1 = "Pozdrav svijetu u @ h: w"

    Sada kada ste dobili osnove dolje, samo trebate znati što su svi posebni znakovi. Vjerojatno vam nije stalo do mnogih od njih, ali evo cijelog popisa koji se pojavljuje u priručniku za Bash:

    • Karakter zvona: \ a
    • Datum u formatu "dan u mjesecu u tjednu" (npr., "Uto 26. svibnja"): \ d
    • Format se prosljeđuje strftime (3) i rezultat se umeće u niz stringova; prazan format rezultira vremenskim prikazom specifičnim za određeni jezik. Potrebni su aparati: \ D format
    • Znak za bijeg: \ e
    • Naziv glavnog računala, do prvog ".": \ h
    • Naziv hosta: \ H
    • Broj zadataka kojima trenutačno upravlja ljuska: \ j
    • Osnovno ime terminala uređaja ljuske: \ l
    • Novi redak: \ n
    • Povratak: \ r
    • Naziv ljuske, osnovno ime od $ 0 (dio koji slijedi nakon konačne kose crte): \ s
    • Vrijeme, u 24-satnom HH: MM: SS formatu: \ t
    • Vrijeme, u 12-satnom HH: MM: SS formatu: \ T
    • Vrijeme u formatu od 12 sati: \ '
    • Vrijeme, u 24-satnom HH: MM formatu: \ A
    • Korisničko ime trenutnog korisnika: \ z
    • Verzija Bash (npr. 2.00): \ v
    • Izdanje Bash, verzija + patchlevel (npr., 2,00,0): \ V
    • Trenutni radni direktorij, s $ HOME skraćenim s tildom (koristi varijablu $ PROMPT_DIRTRIM): \ w
    • Basename od $ PWD, s $ HOME skraćenim s tildom: \ W
    • Broj povijesti ove naredbe: \!
    • Broj naredbe ove naredbe: \ #
    • Ako je efektivni uid 0, #, u suprotnom $: \ $
    • Znak čija je ASCII koda oktalna vrijednost nnn: \ nnn
    • Kose crte: \\
    • Započnite slijed znakova koji nisu ispisani. To se može koristiti za ugradnju kontrolnog niza terminala u upit: \ [
    • Završavanje niza znakova koji nisu ispisani: \]

    Dakle, ako želite dodati datum i vrijeme u Bash prompt i staviti radni direktorij na naredbu u drugi red, možete koristiti sljedeću konstrukciju:

    PS1 = "[d] u @ h \ t

    Kvadratne zagrade ovdje uopće nisu potrebne, ali pomažu u vizualnom razbijanju i olakšavaju čitanje. Kao što smo ranije opisali, promjenljivoj varijabli možete dodati bilo koji tekst ili normalne znakove, pa slobodno koristite sve što vam odgovara.

    Postoji još jedan snažan trik o kojem trebate znati: Možete dodati izlaz bilo koje naredbe promptu. Kad god se pojavi upit, Bash će pokrenuti naredbu i ispuniti trenutne informacije. Da biste to učinili, uključite samo bilo koju naredbu koju želite pokrenuti između dva ' znakova. To nije apostrof - to je ozbiljan naglasak koji se pojavljuje iznad tipke Tab na tipkovnici.

    Na primjer, recimo da želite vidjeti verziju Linux kernela u promptu. Možete koristiti liniju poput sljedeće:

    U @ h na 'uname -s -r' \ t

    Kao još jedan primjer, recimo da želite pregledati vrijeme neprekidnog rada sustava i prosjek učitavanja, kao što je prikazano u produženje rada naredba. Možete koristiti sljedeću konstrukciju, koja postavlja vrijeme neprekidnog rada na vlastiti redak prije ostatka upita.

    PS1 = "(" vrijeme neprekidnog rada ") \ t

    Slobodno eksperimentirajte s različitim posebnim znakovima i naredbama za sastavljanje idealne naredbe.

    Kako dodati boje u svoj Bash Prompt

    Kada otkrijete željenu brzinu, možete joj dodati boje. To je zapravo vrlo jednostavno, ali čini varijablu strašno neurednom i kompliciranom ako ne razumijete što gledate.

    Na primjer, zadana varijabla prompta boje od ranije bila je:

    $ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01, 32m \] \ z '\ h \ [\ 033 [00 mil \]: \ [\ 033 [01, 34m \] \ w \ [\ 033 [00 mil \] \ $

    Ili, ponovno uklanjanje bitova debian_chroot:

    \ [\ 033 [01, 32m \] \ 'u \ h \ [\ 033 [00 mil \]: \ [\ 033 [01, 34m \] \ w \ [\ 033 [00 mil \] \ $

    Ovo je zapravo samo \ 'U \ h: \ w $ varijabla od ranije, ali s informacijama o boji. Doista, možemo ga podijeliti na nekoliko odjeljaka:

    \ [\ 033 [01; 32 milijuna \]\ 'U \ h \ [\ 033 [00 mil \]: \ [\ 033 [01; 34 mil \]\ w \ [\ 033 [00 mil \]\ $

    Prvi dio je \ 'U \ h bit, prethodi mu informacija o boji koja ga pretvara u zelenu. Drugi je : znak, prethodi mu informacija o boji koja uklanja boju. Treći je \ w bit, prethodi mu informacija o boji koja ga pretvara u plavu boju. Četvrti je \ $ bit, prethodi mu informacija o boji koja uklanja boju.

    Kada shvatite kako možete izraditi vlastite oznake u boji, možete dodati bilo koje boje u bilo koje dijelove Bash prompta koji vam se sviđa.

    Evo što trebate znati: Morate uključiti cijele informacije o kodu boja između \ [  i karaktera. U oznaci morate početi s oznakom \ 033 [ ili \ E [ da biste pokazali Bashu da su to informacije o boji. Oba \ 033 [ i \ E [ učinite isto. \ E [ je kraći, pa bi vam bilo prikladnije za korištenje, ali koristit ćemo \ 033 [ ovdje jer odgovara zadanom korištenju. Na kraju oznake morate završiti s m \ za označavanje kraja oznake u boji.

    Ako to srušite, evo kako će izgledati svaka oznaka u boji. Jedina razlika su informacije koje dodate mjestu COLOR za definiranje stvarne boje:

    \ [\ 033 [BOJAm \]

    Bash omogućuje promjenu boje teksta u prednjem planu, dodavanje atributa poput "podebljano" ili "podcrtano" u tekst te postavljanje boje pozadine.

    Evo vrijednosti za tekst u prednjem planu:

    • Crno: 30
    • Plava: 34
    • Cijan: 36
    • Zeleno: 32
    • Ljubičasta: 35
    • Crveno: 31
    • Bijelo: 37
    • Žuto: 33

    Na primjer, budući da je ljubičasti tekst kod boje 32, upotrijebite ga \ [\ 033 [32m \]  za ljubičasti tekst.

    Također možete odrediti atribut za tekst. Taj se atribut mora dodati prije broja boje, odvojen točka-zarezom (;). Tekst s ovim atributima će izgledati drugačije u različitim terminalnim emulatorima.

    Evo vrijednosti za atribute teksta:

    • Normalni tekst: 0
    • Bold ili Light Text: 1 (ovisi o emulatoru terminala.)
    • Dimni tekst: 2
    • Podcrtani tekst: 4
    • Trepćući tekst: 5 (ne radi u većini emulatora terminala.)
    • Obrnuti tekst: 7 (To preokreće boje prednjeg plana i pozadine, tako da ćete vidjeti crni tekst na bijeloj pozadini ako je trenutni tekst bijeli tekst na crnoj pozadini.)
    • Skriveni tekst: 8

    Vi zapravo ne trebate uključiti uobičajeni tekstualni atribut. To je ionako zadano.

    Na primjer, budući da je crveni tekst kod 31, a podebljani tekst je kod 1, upotrijebili biste \ [\ 033 [1 31m \] za podebljani crveni tekst.

    Također možete odrediti boju pozadine, ali ne možete dodati atribut boji pozadine.

    Evo vrijednosti za boje pozadine:

    • Crna pozadina: 40
    • Plava pozadina: 44
    • Cijan pozadina: 46
    • Zelena pozadina: 42
    • Ljubičasta pozadina: 45
    • Crvena pozadina: 41
    • Bijela pozadina: 47
    • Žuta pozadina: 43

    Na primjer, budući da je plava pozadina kod 44, \ [\ 033 [44m \] označava plavu pozadinu.

    Možete odrediti oznake u boji i prednjem planu. Na primjer, 42 predstavlja zelenu pozadinu, a 31 predstavlja crveni tekst. Da biste zadani redak pretvorili u crveni tekst na zelenoj pozadini, upotrijebite:

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

    Ovdje navodimo samo jednu boju pozadine, a zatim jednu boju teksta u prvom planu, koja počinje na početku upita i primjenjuje se na cijeli tekst u upitu. Međutim, možete odrediti koliko god oznaka u boji želite u varijabli kako biste obojili različite dijelove redova kako god želite.

    Boje teksta u pozadini i prednjem planu nastavljaju prolaziti pored upita ako ne navedete kod boje 00, a zatim obrišite informacije o boji. Možete koristiti i ovu oznaku unutar varijable za vraćanje na zadano formatiranje negdje u vašem upitu. Na primjer, sljedeći red završava sva obojenja prije \ $ lik.

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ 'u \ h: \ w \\ [\ 033 [00m \ t

    Kako postaviti novi zadani upit

    Kada završite eksperimentiranje s bojama, trebali biste imati Bash prompt koji vam se sviđa u trenutnoj sesiji. Ali vjerojatno želite da taj novi redak bude stalni kako bi se automatski koristio u svim vašim Bash sjednicama.

    Da biste to učinili, samo trebate promijeniti sadržaj PS1 varijable u .bashrc datoteci, koju smo ranije pogledali..

    Otvorite datoteku .bashrc u željenom uređivaču teksta, na primjer:

    nano ~ / .bashrc

    Pomaknite se prema dolje i pronađite odjeljak PS1 =. Samo zamijenite zadanu varijablu prilagođenom varijablom. Vjerojatno ćete htjeti napustiti $ Debian_chroot: + ($ debian_chroot)  bitovi sami, međutim - neće se pojaviti ako niste u chroot okruženju.

    Unesite svoju PS1 varijablu u boji pod ako ["$ color_prompt" = yes]; zatim crta. Unesite varijablu bez boja pod drugo crta.

    Spremite datoteku i zatvorite uređivač teksta. Na primjer, da biste datoteku spremili u nano, pritisnite Ctrl + O, pritisnite Enter, a zatim pritisnite Ctrl + X da biste izašli.

    Sljedeći put kada pokrenete novu Bash ljusku - na primjer, prijavom na terminalu ili otvaranjem novog prozora terminala - vidjet ćete prilagođeni redak.