Homepage » hogyan kell » A Bash Prompt testreszabása (és színezése)

    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 \] karakters. 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.