Hogyan lehet testre szabni a parancssort a bash-ban

A bash shellben a parancssor az a szöveg, amely akkor jelenik meg, amikor a rendszer kéri a bemenetet. A legtöbb rendszeren így néz ki:

A parancssorban bármilyen parancsot futtathat. A fenti üzenet például a következőt mutatja.

  1. ki vagy (a felhasználó neve)
  2. hol van (a myhost nevű számítógép)
  3. mi a munkakönyvtár ( ~, ami az otthoni könyvtár rövidítése)

Talán a legfontosabb a dollárjel (" $ "), amely egy speciális karakter, amely azt jelzi, hogy nem root felhasználóként jelentkezett be. Ha jelenleg root felhasználóként jelentkezett be, ez a karakter helyett egy font jel (" # ") lenne.

A parancssorot ábrázoló karakterlánc a PS1 nevű speciális környezeti változóban tárolódik. A fenti kérés esetén az értéke a következő.

 "[e-mailben védett]" h: W "" 

A karakterlánc négy különleges karaktert tartalmaz: u, h, W, $ . Ezek az elszabadult karakterszekvenciák, amelyek helyettesítik a tényleges értékeket minden alkalommal, amikor a parancs megjelenik.

Speciális karakterek

Az alábbi táblázatban felsorolt ​​speciális karakterláncok használhatók a bash shell parancssorban.

KaraktersorozatFordítás
\ aA "riasztás" karakter. A hangjelzés vagy a képernyő villog
\ dAz aktuális dátum, amely a Hétköznapok dátuma formátumban jelenik meg (pl. Szerda május 13. ).
D { formátum }Az aktuális dátum és idő a strftime által értelmezett formátum szerint jelenik meg. Ha a formátumot kihagyja, a D {} az aktuális 12 órás AM / PM időt jeleníti meg (pl. 07:23:01 PM ).
\ eMenekülési karakter (ASCII 27)
e [ szám mJelöli a szín kezdetét, ahol a szám egy szám vagy számpár, amely meghatározza, hogy milyen színt és stílust használjon. Lásd a színek listáját és számpárjait.
\ e [mA szín megjelenítésére szolgáló szekvencia végét jelöli.
\ hA gép gazdaneve az elsőig . ". Például, ha a rendszer gazdaneve myhost.mydomain, h megjeleníti a myhost
\ HA gép teljes gépneve.
\ jA héj által kezelt munkahelyek száma.
\ lA shell végberendezés-azonosítója, általában egyjegyű szám.
\ nÚj vonal
\ rSzállítás vissza
\ sA héj neve (az aktuális bash-munkamenetet kezdeményező folyamat alapneve).
\ tAz aktuális idő 24 órás HH: MM: SS formátumban jelenik meg (pl. 19:23:01 ).
\ TAktuális idő 12 órás HH: MM: SS formátumban (pl. 07:23:01 ).
\ @Aktuális idő 12 óra HH: MM: SS AM / PM formátumban (pl. 07:23:01 PM ).
\ AAktuális idő 24 órás HH: MM formátumban (pl. 19:23 ).
\ uAz aktuális felhasználó felhasználóneve.
\ vBash verziószám (pl. 4.3 ).
\ VBash verzió és javítás száma (pl. 4.3.30 ).
\ wAz aktuális könyvtár. A felhasználó otthoni könyvtárát rövidítve tilde (" ~ ") jelöli. Például: / usr / bin, ~ vagy ~ / dokumentumok
\ WAz aktuális munkakönyvtár alapneve (pl. Bin, ~ vagy dokumentumok ).
\!Az aktuális parancs történetszáma.
\ #Az aktuális parancs parancs száma (parancsszámok olyanok, mint az előzmények száma, de az új bash-munkamenet indításakor nullára állnak).
nnnAz ASCII karakter, amelynek oktális értéke nnn.
\\Backslash
\ [Jelzi a nem nyomtatott karakterek, például a terminálvezérlő kódok kezdetét.
\]Jelzi a nem nyomtatási sor végét.
\ $Kinyomtatja a # -et, ha az UID nulla (superuser), vagy $, ha nagyobb, mint nulla (bárki más).

Az aktuális munkamenet kérésének módosítása

A PS1 környezeti változót úgy állíthatja be, mint bármely más változót a bash-ban, a NAME = VALUE utasításformával . Tehát a szabványos üzenet beállításához írja be a következő parancsot a parancssorba.

 PS1 = "e-mail védett] h: W $" 

… És azonnali változása azonnal megváltozik. Figyelje meg a dollárjel utáni utolsó helyet a karakterláncban, hogy egy extra helyet kapjon a kérés után, ami megkönnyíti a parancsok által megadott parancsok megkülönböztetését. Az extra hely nem szükséges, de ajánlott.

Vegye figyelembe, hogy a parancsban nincs szóköz a PS1, = és a string között.

Az összes jövőbeli munkamenet kérésének módosítása

Ha meg szeretné változtatni az új munkamenetre vonatkozó kéréseket, módosítania kell a bash indítási fájljait. Minden alkalommal, amikor elindít egy terminál munkamenetet, a következő fájlok, ha vannak, olvashatók és parancsfájlként kerülnek végrehajtásra:

/ etc / profile ~ / .bash_profile ~ / .bash_login

~ / .Profile

Az első fájl, az / etc / profile egy olyan rendszerindító parancsfájl, amely a rendszeren lévő bármely felhasználó számára kezdődik. Az egyes felhasználók kérésének megváltoztatásához módosítania kell ezt a fájlt, és ehhez a felhasználóhoz szükséges jogosultságok szükségesek.

 sudo vi / etc / profile 

Például, a fenti parancs kéri a jelszót, és ha a sudoers listában van, nyissa meg az univerzális bash indítófájlt, mint szuperfelhasználót, a vi szerkesztő segítségével.

A másik három fájlt a fent felsorolt ​​sorrendben keresi, és / etc / profile után hajtja végre. Ez a három fájl az otthoni könyvtárban él, így csak az Ön számára hajtják végre. A PS1-t több helyen is definiálhatják, ezért gondosan olvassa el a fájlokat, hogy megismerje, hogyan állíthatók be a rendszer. Például sok rendszer eltérő PS1 értéket fog használni attól függően, hogy a terminál támogatja-e a színt.

A három fájl bármelyike ​​létezhet és használható a bash-munkamenethez, de ha több mint egy, akkor a felsorolt ​​sorrendben kerül végrehajtásra.

Ha nem akarja törölni vagy megváltoztatni a sorokat az indítási fájlokban, akkor hozzáadhat egy új PS1 = nyilatkozatot egy fájl végéhez, hogy egyéni parancsot alkalmazzon.

Szín hozzáadása a kérelemhez

Ha olyan terminált használ, amely támogatja a színt (és valószínűleg), akkor hozzáadhatja a színhez a színt. A színek hozzáadódnak az alábbi formátumú speciális karakterláncok használatával:

e [ szám mSzínes szekció kezdődik. A számérték egy különleges szám vagy számpár, amely meghatározza a színt.
\ e [ma színes szakasz végét jelenti; visszaáll az alapértelmezett színre

Például a parancssor:

 PS1 = "e [1; 35mThis világos lila" e [0; 35m ... és ez sötétlila. \ T 

Hozzon létre egy ilyen üzenetet:

Itt van egy lista a használt színekről és azok számáról, amelyek azokat megadják:

Szám (ok)Szín / stílusSzám (ok)Szín / stílus
0; 30Fekete1; 30Sötét szürke
0; 31Piros1; 31Élénkvörös
0; 32Zöld1; 32Világos zöld
0; 33Barna1; 33Sárga
0; 34Kék1; 34Élénk kék
0; 35Lila1; 35Világos lila
0; 36Cián1; 36Fényes cián
0; 37szürke1; 37fehér
4; 30Fekete, aláhúzva40háttér: Sötét szürke
4; 31Piros, aláhúzva41háttér: piros
4; 32Zöld, aláhúzva42háttér: zöld
4; 33Brown, aláhúzva43háttér: sárga
4; 34Kék, aláhúzott44háttér: kék
4; 35Lila, aláhúzva45háttér: lila
4; 36Cián, aláhúzva46háttér: cián
4; 37Szürke, aláhúzva47Háttér: Szürke

Íme néhány példa, és hogyan néz ki:

 PS1 = e [0; 31 mRe e [0; 32 mGreen e [0; 33mBrown e [0; 34 mBe e e [0; 35 mPurple e [0; 36 mCyan e [0; 37mGray e [m; 

 PS1 = "aláhúzva: e [4; 31 mRe e [4; 32 mGreen e [4; 33 mBrown e [4; 34 mBe e [4; 35 mPurple e [4; 36 mCyan e [4; m” 

 PS1 = "e [44m e [1; 35mBright lila, kék alapon e [m")