A Bash Prompt testreszabása (és színezése)
A legtöbb Linux disztribúció beállítja a Bash parancsot, hogy valami hasonlót nézzen ki felhasználónév @ gépnév: könyvtár $
. De beállíthatja, hogy a Bash gyorsítótár tartalmazza, amit szeretne, és akár tetszőleges színt is választhat.
Az itt bemutatott példa lépéseket az Ubuntu 16.04 LTS-en végeztük. A folyamatnak meg kell egyeznie más Linux-disztribúciókban, bár az alapértelmezett Bash-parancs és a .bashrc fájl beállításai kicsit másak lehetnek.
Ahol a Prompt változó tárolva van
A Bash parancs konfigurációját a felhasználói fiók .bashrc fájljában tárolja, ami a következő: ~ / .Bashrc
. Tehát, ha a felhasználóneve bob, a fájl a /home/bob/.bashrc
.
Megnyithatja a fájlt az aktuális Bash változó megtekintéséhez. A nano-t használjuk példaként a szövegszerkesztőnknek, bár a vi, emacs vagy bármely más szövegszerkesztő is használható. Terminál megnyitása és futtatása:
nano ~ / .bashrc
Görgessen le a PS1 =
szakasz. Az első változó meglehetősen bonyolultnak tűnik, mert színes információkat tartalmaz - ezt később elmagyarázzuk. A második változó, színes információ nélkül, a következőképpen szól:
$ Debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $
Ez még mindig egy kicsit bonyolult $ Debian_chroot: + ($ debian_chroot)
bit. Ezek csak azt mondják Bashnek, hogy tudassa, ha Debian chroot környezetet használ, és általában nem jelenik meg. Ezek figyelmen kívül hagyása itt az alapértelmezett struktúra a Bash parancs változójának:
\ U @ \ h: \ w \ $
\ u
jelzi felhasználónevét, @
a @ jelet jelzi, \ h
jelzi a hosztnevet (számítógép neve), :
a: karaktert jelzi, \ w
jelzi a munkakönyvtárat, és \ $
$ -ot jelez, ha normál felhasználói fiók vagy #, ha gyökér. Szóval, hogy mindezt együtt, megkapod felhasználónév @ gépnév: working_directory $
.
Ahhoz, hogy megváltoztassa a Bash parancsot, csak a PS1 változó speciális karaktereit kell hozzáadnia, eltávolítania vagy átrendezni. De sok más változó is használható, mint az alapértelmezett.
Hagyja a szövegszerkesztőt most-nano-ra, nyomja meg a Ctrl + X gombot a kilépéshez. Megmutatjuk, hogyan kísérletezhetünk a változókkal, mielőtt új szöveget írnánk a .bashrc fájlodba.
Egyéni Bash Prompt létrehozása
A Bash parancs konfigurációja a PS1 változóban tárolódik. A PS1 változó tartalmának új változóba történő mentéséhez futtassa a következő parancsot:
DEFAULT = $ PS1
Most beállíthatja a PS1 változót különböző értékekre a kísérlethez. Például az első sorban az alapértelmezett „user $” felirat jelenik meg, míg a második az alapértelmezett „user: working_directory $” parancsot állítja be.
PS1 = "u $" PS1 = "u: w" $ "
Ha valaha szeretne visszatérni az alapértelmezett parancssorba, akkor futtassa a következő parancsot.
PS1 = $ DEFAULT
A Bash visszaáll az alapértelmezett parancsra annak köszönhetően, hogy korábban ezeket az alapértelmezett beállításokat mentette. Ne feledje, hogy az itt elvégzett módosítások csak ideiglenesek az aktuális Bash-munkamenetben, így mindig kijelentkezhet és visszaválthatja vagy bezárhatja és újra megnyithatja a terminálablakot, hogy visszatérjen az alapértelmezett parancssorba. A fenti sor azonban lehetővé teszi, hogy könnyen visszatérjen az alapértelmezett Bash parancssorba anélkül, hogy az ablakok kijelentése vagy bezárása nehezen történne.
Bármely karaktert vagy szöveget hozzáadhat a változóhoz. Tehát, ha az alapértelmezett parancsot a „Hello World” elnevezéssel szeretné előtérbe helyezni, használhatja:
PS1 = "Hello World u @ h: w"
Most, hogy megvan az alapjaink, csak tudnod kell, mi az összes speciális karakter. Valószínűleg nem érdekel ezek közül sok, de itt van a teljes lista a Bash kézikönyvben:
- Harang karakter:
\ a
- A dátum, a „Hétköznap hónapja” formátumban (pl. „Tue május 26.”):
\ d
- A formátum átadódik a strftime-nek (3), és az eredmény beíródik a parancssorba; egy üres formátum lokális-specifikus időképet eredményez. A zárójelek szükségesek:
\ D formátumban
- Menekülési karakter:
\ e
- A gazdagép neve, az elsőig.
\ h
- A hosztnév:
\ H
- A shell által jelenleg kezelt feladatok száma:
\ j
- A héj termináleszközének neve:
\ l
- Új sor:
\ n
- A kocsi visszatérése:
\ r
- A héj neve, a $ 0 alapneve (az utolsó sorozatot követő rész):
\ s
- Az idő 24 órás HH: MM: SS formátumban:
\ t
- Az idő 12 óra HH: MM: SS formátumban:
\ T
- Az idő 12 órás / pm formátumban:
\ @
- Az idő 24 órás HH: MM formátumban:
\ A
- Az aktuális felhasználó felhasználóneve:
\ u
- A Bash verziója (pl. 2.00):
\ v
- Bash, verzió + patchlevel (pl. 2.00.0) kiadása:
\ V
- Az aktuális munkakönyvtár, a $ HOME rövidítéssel egy tildével (a $ PROMPT_DIRTRIM változót használja):
\ w
- A $ PWD alapnév, a $ HOME rövidítéssel egy tildével:
\ W
- A parancs története:
\!
- A parancs parancs száma:
\ #
- Ha a hatékony uid 0, #, egyébként $:
\ $
- Az a karakter, amelynek ASCII-kódja az nnn oktális értéke:
\ nnn
- Hátlap:
\\
- Kezdje a nem nyomtató karakterek sorozatát. Ez a terminálvezérlési sorrend beágyazására használható a kérésre:
\ [
- Végezze el a nem nyomtatási karakterek sorozatát:
\]
Tehát, ha azt szeretné, hogy a dátumot és az időt hozzáadja a Bash parancshoz, és a második könyvtárba helyezze a parancsot a munkakönyvtárba, akkor a következő konstrukciót használhatja:
PS1 = "[d] n" \ t
Az itt látható szögletes zárójelek egyáltalán nem szükségesek, de segítenek áttörni a dolgokat vizuálisan, és könnyebben olvashatók. Ahogy korábban foglalkoztunk, tetszőleges szöveget vagy normál karaktert adhat hozzá a kívánt változóhoz, így nyugodtan használhat bármit, ami az Ön számára működik.
Van még egy erősebb trükk, amit tudnod kell: Bármely parancs kimenetét hozzáadhatod a parancssorba. Amikor megjelenik az üzenet, a Bash futtatja a parancsot, és kitölti az aktuális információkat. Ehhez csak egy parancsot kell beírni, amelyet két között kíván futtatni '
karakterek. Ez nem egy aposztróf, ez a sűrű akcentus, amely a billentyűzeten a Tab gomb felett jelenik meg.
Tegyük fel például, hogy meg szeretné tekinteni a Linux kernel verzióját a parancssorban. A következő sorokat használhatja:
PS1 = "@ @" a "uname -s -r"
Egy másik példa, azt szeretnénk mondani, hogy meg szeretné tekinteni a rendszer rendelkezésre állási idejét és a terhelés átlagát, ahogy azt a uptime
parancs. Használhatja a következő konstrukciót, amely az uptime-t saját sorába helyezi, mielőtt a többi üzenetet megkapná.
PS1 = "(" uptime ") n u @ h: w $"
Nyugodtan kísérletezzen különböző speciális karakterekkel és parancsokkal az ideális parancssor összeállításához.
Színek hozzáadása a Bash Prompt-hoz
Miután kitaláltad a kívánt gyorshívást, hozzáadhatsz színeket. Ez valójában nagyon egyszerű, de a változót bámulatosan bonyolultnak és bonyolultnak tűnik, ha nem érti, mit néz.
Például a korábbi szín alapértelmezett változó:
$ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ H \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Vagy távolítsa el ismét a debian_chroot biteket:
\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Ez valójában csak az \ U @ \ h: \ w $
változó a korábbi, de színes információkkal. Tényleg, néhány részre bonthatjuk:
\ [\ 033 [01; 32m \]\ U @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $
Az első rész a \ U @ \ h
bit, melyet színes információk jelennek meg. A második a :
karakter, amely előtt a színinformációk eltávolítják a színt. A harmadik a \ w
bit, melyet színinformáció követ, amely kékre vált. A negyedik az \ $
bit, melyet színinformáció követ, amely eltávolítja a színezést.
Miután megértette, hogyan készíthet saját színcímkéket, hozzáadhatja tetszés szerinti színeit a Bash bármelyik részéhez, amelyet szeretne.
Amit tudnod kell: A teljes színkódinformációt meg kell adnod a \ [
és \] karakter
s. A címkén belül el kell kezdeni \ 033 [
vagy \ E [
a Bash-nek jelezni, hogy ez színinformáció. Mindkét \ 033 [
és \ E [
ugyanezt tegyük. \ E [
rövidebb, ezért kényelmesebb lehet használni, de használjuk \ 033 [
itt, mivel az megfelel az alapértelmezetten használtnak. A címke végén be kell fejeznie m \
egy színes címke végének jelzésére.
Ezt megszakítva, itt néz ki minden színcímke. Az egyetlen különbség az, amit a COLOR helyett adtál hozzá a tényleges szín meghatározásához:
\ [\ 033 [SZÍNm \]
A Bash segítségével megváltoztathatja az előtér szövegének színét, hozzáadhat olyan attribútumokat, mint a „merész” vagy „aláhúzott” szöveg, és beállíthatja a háttérszínt.
Íme az előtér szövegének értékei:
- Fekete: 30
- Kék: 34
- Cyan: 36
- Zöld: 32
- Lila: 35
- Piros: 31
- Fehér: 37
- Sárga: 33
Például, mivel a lila szöveg színkód 32, használná \ [\ 033 [32m \]
lila szövegért.
Megadhat egy attribútumot a szöveg számára is. Ezt az attribútumot hozzá kell adni a színszám előtt, pontosvesszővel elválasztva (;). Az ilyen attribútumokkal rendelkező szöveg különböző terminál emulátorokban néz ki.
Íme a szöveg attribútumok értékei:
- Normál szöveg: 0
- Félkövér vagy világos szöveg: 1 (A terminál emulátorától függ.)
- Dim Szöveg: 2
- Aláhúzott szöveg: 4
- Villogó szöveg: 5 (Ez nem működik a legtöbb terminál emulátorban.)
- Megfordított szöveg: 7 (Ez az előtér és a háttér színeit megfordítja, így a fekete szöveg fehér alapon jelenik meg, ha az aktuális szöveg fehér alapon fekete.)
- Rejtett szöveg: 8
Valójában nem kell tartalmaznia a normál szöveg attribútumot. Ez az alapértelmezett.
Például, mivel a piros szöveg a 31-es kód, a félkövér szöveg pedig az 1-es kód \ [\ 033 [1; 31m \]
félkövér piros szöveget.
Megadhat egy háttérszínt is, de nem adhat meg attribútumot a háttérszínhez.
Íme a háttérszín értékei:
- Fekete háttér: 40
- Kék háttér: 44
- Cián háttér: 46
- Zöld háttér: 42
- Lila háttér: 45
- Piros háttér: 41
- Fehér háttér: 47
- Sárga háttér: 43
Például, mivel a kék háttér kód 44, \ [\ 033 [44m \]
egy kék hátteret.
Megadhatja mind az előtér, mind a háttérszín címkéket. Például 42 egy zöld háttér, 31 pedig piros szöveget jelent. Tehát, ha az alapértelmezett parancsot zöld háttérzé válik, akkor használhatja:
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m] u @ h: w "
Itt csak egy háttérszínt adunk meg, majd egyetlen előtér szöveges színt adunk meg, ami a parancssor elején kezdődik, és a szöveg minden szövegére vonatkozik. Ugyanakkor megadhat annyi színmintát, amennyit a változóban szeretnénk, hogy a kívánt rész különböző részeit színesítse.
A háttér és az előtér szövegének színei tovább haladnak, ha nem adtuk meg a 00 színkódot. Ezt a címkét a változóban is használhatja, hogy visszaállítsa a formázást az alapértelmezettre. Például a következő sor véget vet az összes színezésnek a \ $
karakter.
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m] \ t
Az új alapértelmezett kérés beállítása
Miután befejezte a színekkel végzett kísérletezést, az aktuális munkamenetben szeretne egy Bash-üzenetet használni. De valószínűleg azt szeretné, hogy az új gyorsindítás állandó legyen, így automatikusan használja az összes Bash-munkamenetet.
Ehhez meg kell változtatnia a PS1 változó tartalmát a .bashrc fájlban, amelyet korábban megnézettünk.
Nyissa meg a .bashrc fájlt a kívánt szövegszerkesztőben, például:
nano ~ / .bashrc
Görgessen lefelé, és keresse meg a PS1 = szekciót. Csak cserélje ki az alapértelmezett változót a testreszabott változóval. Valószínűleg el akarod hagyni a $ Debian_chroot: + ($ debian_chroot)
önmagában, de nem fognak megjelenni, hacsak nincs chroot környezetben.
Írja be a színes PS1 változóját a ha ["$ color_prompt" = igen]; azután
vonal. Írja be a változó szín nélkül a más
vonal.
Mentse el a fájlt és zárja be a szövegszerkesztőt. Például, ha a fájlt nano-ban szeretné menteni, nyomja meg a Ctrl + O billentyűt, nyomja meg az Entert, majd a Ctrl + X billentyűkombinációt a kilépéshez..
A következő alkalommal, amikor elindít egy új Bash shell-et - például bejelentkezve a terminálra vagy új terminálablak megnyitásával - megjelenik a testreszabott üzenet.