Hogyan szabhatja meg (és színezheti) a Bash promptját

Tartalomjegyzék:

Hogyan szabhatja meg (és színezheti) a Bash promptját
Hogyan szabhatja meg (és színezheti) a Bash promptját

Videó: Hogyan szabhatja meg (és színezheti) a Bash promptját

Videó: Hogyan szabhatja meg (és színezheti) a Bash promptját
Videó: How to diagnose your check engine light - YouTube 2024, Április
Anonim
A legtöbb Linux disztribúció konfigurálja a Bash parancsot, hogy valami ilyesmit nézzen ki
A legtöbb Linux disztribúció konfigurálja a Bash parancsot, hogy valami ilyesmit nézzen ki

username@hostname:directory$

. De beállíthatja a Bash parancsot, hogy tartalmazza az Ön által tetszetett tartalmat, és válassza ki a kívánt színeket is.

A példa lépéseit Ubuntu 16.04 LTS verzión végeztük el. A folyamatnak más Linux disztribúciókra is meg kell egyeznie, bár az alapértelmezett Bash parancs és a.bashrc fájl beállításai kicsit másképp változnak.

A Prompt változó tárolása

A Bash gyorsbeállítása a felhasználói fiókodban található.bashrc fájlban található, amely a következő helyen áll

~/.bashrc

. Tehát, ha a felhasználóneved a bob, a fájl itt van

/home/bob/.bashrc

Megnyithatja a fájlt az aktuális Bash változó megtekintéséhez. Használjuk a nano-t példaként szolgáló szövegszerkesztõnknek, bár vi, emacs vagy bármilyen más szövegszerkesztõvel is találkozhatunk. Nyisson meg egy terminált és futtassa:

nano ~/.bashrc

Görgessen le a gombbal
Görgessen le a gombbal

PS1=

szakasz. Az első változó meglehetősen bonyolultnak tűnik, mert színes információt tartalmaz - 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 a
Ez még mindig egy kicsit bonyolult a

${debian_chroot:+($debian_chroot)}

bit. Ezek csak azt mondják Bashnak, hogy tudassa veled, ha Debian chroot környezetet használ, és általában nem jelenik meg. Ezek figyelmen kívül hagyása itt a Bash prompt változó alapértelmezett struktúrája:

u@h:w$

u

jelzi felhasználónevét,

@

jelzi a @ jelet,

h

jelzi a gépnevet (számítógépnév),

:

jelzi: karakter,

w

a munkakönyvtárat jelöli, és

$

jelzi, hogy $, ha normális felhasználói fiók vagy # ha root vagy. Szóval, mindezt együtt hozza

username@hostname:working_directory$

A Bash parancs megváltoztatásához csak a PS1 változó speciális karaktereit kell hozzáadni, eltávolítani vagy átrendezni. De sok más változó is használható, mint az alapértelmezett.

Hagyja el most a szövegszerkesztőt a nano-ban, nyomja le a Ctrl + X billentyűt a kilépéshez. Megmutatjuk Önnek, hogyan kísérletezhet a változókkal, mielőtt ténylegesen írna egy új.bashrc fájlt.

Hogyan hozzunk létre egy egyéni csomópont-figyelmeztetést

A Bash prompt konfigurációját a PS1 változó tárolja. A PS1 változó tartalmának új változóba való mentéséhez futtassa a következő parancsot:

DEFAULT=$PS1

Most beállíthatja a PS1 változót a különböző értékekre a kísérlethez. Például az első sor itt állítja be a kérést egy alapvető "user $" promptra, míg a második az alapértelmezett "user: working_directory $" promptot állítja be.

PS1='u$ ' PS1='u:w$ '

Ha bármikor vissza akar térni az alapértelmezett parancssorba, akkor futtassa a következő parancsot.

PS1=$DEFAULT

A Bash visszaáll az alapértelmezett promptra, annak köszönhetően, hogy korábban mentette ezeket az alapértelmezett beállításokat. Ne feledje, hogy az itt végrehajtott változtatások csak ideiglenesek az aktuális Bash munkamenet számára, így bármikor kijelentkezhet és jelentkezhet be, illetve bezárhatja és újra megnyithatja a terminál ablakát, hogy visszatérjen az alapértelmezett prompthoz. De a fenti sor lehetővé teszi, hogy egyszerűen visszatérjen az alapértelmezett Bash parancsra, anélkül, hogy problémát jelentene az ablak aláírása vagy bezárása.

Minden karaktert vagy szöveget hozzáadhat a változóhoz. Tehát az "Hello World" alapértelmezett prompt előhívásához használhatja a következőket:
Minden karaktert vagy szöveget hozzáadhat a változóhoz. Tehát az "Hello World" alapértelmezett prompt előhívásához használhatja a következőket:

PS1='Hello World u@h:w$ '

Most, hogy lefagyta az alapokat, csak tudnia kell, hogy mi az összes különleges karakter. Valószínűleg ezek közül sokan nem törődnek, de itt a teljes lista, ahogyan azt a Bash kézikönyv tartalmazza:
Most, hogy lefagyta az alapokat, csak tudnia kell, hogy mi az összes különleges karakter. Valószínűleg ezek közül sokan nem törődnek, de itt a teljes lista, ahogyan azt a Bash kézikönyv tartalmazza:
  • A harang karakter:

    a

  • A dátum a "Hétköznapi havi dátum" formátumban (például "Május 26.)":

    d

  • A formátum átkerül a strftime-be (3), és az eredmény beillesztésre kerül a prompt karakterláncba; egy üres formátum a helyspecifikus időbeli reprezentációt eredményezi. A zárójelek szükségesek:

    D{format}

  • Egy menekülési karakter:

    e

  • A gazdanév, az első "."

    h

  • A gazdagép neve:

    H

  • A shell által jelenleg kezelt feladatok száma:

    j

  • A shell termináleszköz neve:

    l

  • Újsor:
  • A kocsi vissza:
  • A shell neve, a $ 0 alapnév (a végső perjel után következő rész):

    s

  • Az idő 24 órás HH: MM: SS formátumban:

  • Az idő 12 órás HH: MM: SS formátumban:

    T

  • Az idő 12 órás am / 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 (például 2.00):

    v

  • A Bash, verzió + patchlevel (például 2.00.0) kiadása:

    V

  • Az aktuális munkakönyvtár, a $ HOME rövidítése tildével (a $ PROMPT_DIRTRIM változót használja):

    w

  • A $ PWD bázisnév, a $ HOME rövidítése tildával rövidítve:

    W

  • A parancs története:

    !

  • A parancs parancsszáma:

    #

  • Ha a tényleges uid 0, #, egyébként $:

    $

  • Az a karakter, amelynek ASCII kódja az oktális érték nnn:

    nn

  • A visszafordulás:

  • Kezdje el a nem nyomtatási karakterek sorát. Ezt felhasználhatjuk egy terminálvezérlő szekvencia beágyazásához a promptban:

    [

  • Nem nyomtatható karakterek sorozata:

    ]

Tehát, ha a dátumot és időt szeretné hozzáadni a Bash parancssorához, és üzembe helyezné a munkakönyvtárat egy másik sorra, akkor a következő konstrukciót használhatja:

PS1='[d ] u@h

w$ '

A szögletes zárójelek itt nem feltétlenül szükségesek, de segítséget nyújtanak a vizuális megszakításhoz és a vonal könnyebb olvasásához. Ahogy korábban lefedtük, hozzáadhatunk bármilyen szöveges vagy normál karaktert a kívánt változóhoz, ezért szabadon használhassa az Ön számára szükséges dolgokat.

Van még egy erősebb trükk, amiről tudnia kell: minden parancs kimenetét hozzáadhatja a prompthoz. A prompt megjelenésekor a Bash futtatja a parancsot, és kitölti az aktuális információkat. Ehhez csak tartalmazzon minden parancsot, amelyet kettő között szeretnél futtatni
Van még egy erősebb trükk, amiről tudnia kell: minden parancs kimenetét hozzáadhatja a prompthoz. A prompt megjelenésekor a Bash futtatja a parancsot, és kitölti az aktuális információkat. Ehhez csak tartalmazzon minden parancsot, amelyet kettő között szeretnél futtatni

`

karakterek. Ez nem apostropé - ez a súlyos akcentus, amely a billentyűzet Tab billentyűje fölött jelenik meg.

Tegyük fel például, hogy a parancssorban szeretné megtekinteni a Linux kernel verzióját. Használhat egy sort, például a következőket:

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

Másik példaként azt mondhatjuk, hogy meg szeretné tekinteni a rendszer üzemidejét és a terhelés átlagát, amint azt a
Másik példaként azt mondhatjuk, hogy meg szeretné tekinteni a rendszer üzemidejét és a terhelés átlagát, amint azt a

uptime

parancs. Használhatja a következő konstrukciót, amely a rendelkezésre álló üzemidőt a saját vonalára állítja, mielőtt a rendszer a továbbiakban felszáll.

PS1='(`uptime`)

u@h:w$ '

Nyugodtan kísérletezhet különböző speciális karakterekkel és parancsokkal az ideális parancssor összeállításához.
Nyugodtan kísérletezhet különböző speciális karakterekkel és parancsokkal az ideális parancssor összeállításához.

Hogyan adhatunk színeket a Bash prompthoz?

Miután kitaláltuk az Ön által ajánlott gyorsbillentyűt, hozzáadhatunk színeket. Ez valójában nagyon egyszerű, de a változó rendkívül rendetlen és bonyolultnak tűnik, ha nem érti, hogy mit néz.

Például az alapértelmezett színes prompt változó korábbi volt:

${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Vagy a debian_chroot bitek ismételt eltávolítása:

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

Ez valójában csak a
Ez valójában csak a

u@h:w$

változó korábbi, de színes információkkal. Valóban néhány részre bonthatjuk:

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

Az első rész a

u@h

bit, előtte a színes információ, amely zöldre vált. A második az

:

karaktert, amelyet színes információ előz meg, amely eltávolítja a színezést. A harmadik a

w

bit, előtte a kék színű információ. A negyedik a

$

bit, előtte a színes információ, amely eltávolítja a színezést.

Miután megértette, hogyan hozhat létre saját színes címkéket, tetszőleges színt adhat hozzá a Bash parancs bármely részéhez.
Miután megértette, hogyan hozhat létre saját színes címkéket, tetszőleges színt adhat hozzá a Bash parancs bármely részéhez.

Íme, mit kell tudnod: A teljes színkódot a

[

és

] character

s. A címke belsejében meg kell kezdeni az egyiket

33[

vagy

e[

hogy jelezze a Bash-nak, hogy ez színes információ. Mindkét

33[

és

e[

ugyanezt tegye.

e[

rövidebb, így kényelmesebb lehet használni, de használni fogjuk

33[

itt megfelel az alapértelmezésben használtnak. A címke végén véget kell vetni

m

a színcímke vége.

Ezzel lebontva, itt fog megjelenni minden színcímke. Az egyetlen különbség a COLOR helyett hozzáadott információ az aktuális szín meghatározásához:

[33[ COLORm]

A Bash lehetővé teszi az előtér szövegének színének megváltoztatását, a "félkövér" vagy "aláhúzás" attribútumok hozzáadását a szöveghez, és háttérszínt állíthat be.

Itt találhatók az előtér szövegének értékei:

  • Fekete: 30
  • Kék: 34
  • Cián: 36
  • Zöld: 32
  • Lila: 35
  • Piros: 31
  • Fehér: 37
  • Sárga: 33

Például, mivel a lila szöveg a 32-es színkód, akkor használja

[33[ 32m]

lila szöveg esetén.

Megadhat egy attribútumot is a szöveghez. Ezt a tulajdonságot hozzá kell adni a színszám előtt, pontosvesszővel elválasztva (;). Az ezekkel az attribútumokkal rendelkező szöveg eltérően fog megjelenni a különböző terminál emulátorokban.
Megadhat egy attribútumot is a szöveghez. Ezt a tulajdonságot hozzá kell adni a színszám előtt, pontosvesszővel elválasztva (;). Az ezekkel az attribútumokkal rendelkező szöveg eltérően fog megjelenni a különböző terminál emulátorokban.

Itt vannak a szöveges attribútumok értékei:

  • Normál szöveg: 0
  • Szilárd 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 a legtöbb terminál emulátorban nem működik.)
  • Fordított szöveg: 7 (Ezzel az előtér és a háttér színeit invertálja, így fekete szöveg jelenik meg fehér háttéren, ha az aktuális szöveg fehér szöveges, fekete háttéren.)
  • Rejtett szöveg: 8

Nem kell a normál szöveges attribútumot bevinnie. Mindenesetre ez az alapértelmezés.

Például, mivel a piros szöveg a 31-es kód, a vastag betű pedig az 1. kód

[33[ 1;31m]

a merész piros szöveghez.

Megadhatja a háttérszínt is, de nem adhat hozzá attribútumot háttérszínhez.
Megadhatja a háttérszínt is, de nem adhat hozzá attribútumot háttérszínhez.

Itt vannak a háttérszínek é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 a 44-es kód,

[33[ 44m]

megadja a kék háttér.

Megadhatja mind az előtér, mind a háttér színtani címkéket. Például, 42 zöld háttér, és 31 piros szöveg. Tehát, ha az alapértelmezett prompt zöld háttérként válik piros szöveggé, akkor a következőket használja:
Megadhatja mind az előtér, mind a háttér színtani címkéket. Például, 42 zöld háttér, és 31 piros szöveg. Tehát, ha az alapértelmezett prompt zöld háttérként válik piros szöveggé, akkor a következőket használja:

PS1='[33[ 42m][33[ 31m]u@h:w$ '

Egyetlen háttérszínt adunk meg, majd itt egyetlen előtér szöveg színt, amely a prompt kezdetén kezdődik, és minden szövegre a promptban kerül alkalmazásra. Azonban megadhat annyi színcímkét, amennyit csak akarsz a változóban, a színes válasz különböző részeihez.

A háttér és az előtér szövegszínei továbbra is elhaladnak a prompt mellett, hacsak nem adja meg a 00 színkódot, törölje a színinformációkat. Ezt a címkét a változón belül is használhatja, ha visszaállítja a formázást az alapértelmezettre. Például a következő sor véget vet minden színezés előtt
A háttér és az előtér szövegszínei továbbra is elhaladnak a prompt mellett, hacsak nem adja meg a 00 színkódot, törölje a színinformációkat. Ezt a címkét a változón belül is használhatja, ha visszaállítja a formázást az alapértelmezettre. Például a következő sor véget vet minden színezés előtt

$

karakter.

PS1='[33[ 42m][33[ 31m]u@h:w\[33[ 00m]$ '

Image
Image

Az új alapértelmezett beállítás beállítása

Ha befejezte a színek kísérletezését, akkor az aktuális munkamenetben egy Bash parancsot kell megadnia. De valószínűleg ezt az új promptot szeretné állandóvá tenni, így automatikusan használják az összes Bash-munkamenetben.

Ehhez meg kell változtatnod a PS1 változó tartalmát a.bashrc fájlban, amelyet korábban né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 = részt.Cserélje ki az alapértelmezett változót a testreszabott változóval. Valószínűleg el akarsz hagyni

${debian_chroot:+($debian_chroot)}

csak a bitek, de nem fognak megjelenni, hacsak nem egy chroot környezetben vagyunk.

Adja meg színes PS1 változóját a

if [ '$color_prompt' = yes ]; then

vonal. Adja meg a változót a színek nélkül

else

vonal.

Mentse el a fájlt, és zárja be a szövegszerkesztőt. Például, ha menteni szeretné a fájlt a nano-ban, nyomja meg a Ctrl + O billentyűkombinációt, majd nyomja meg az Enter billentyűt, majd a Ctrl + X billentyűkombinációból kilépéshez.
Mentse el a fájlt, és zárja be a szövegszerkesztőt. Például, ha menteni szeretné a fájlt a nano-ban, nyomja meg a Ctrl + O billentyűkombinációt, majd nyomja meg az Enter billentyűt, majd a Ctrl + X billentyűkombinációból kilépéshez.

A következő alkalommal, amikor új Bash-héjat indít - például a terminálon való bejelentkezéssel vagy új terminálblokk megnyitásával - megjelenik a testreszabott prompt.

Ajánlott: