Fizetési módok Abuse

Linux terminál színek

26.09.2021, 22:47

A Linux előnye, hogy bármit testre szabhatsz, ha akarsz. Ez a projektív rendszerek előnye a procedurális rendszerekkel szemben. Ez egyfajta konstruktor, amely egyedi blokkokból áll, amelyek mindegyike tetszés szerint testre szabható.

Különösen érdekes, ha nem csak kész megoldásokat másolsz, hanem megpróbálod megérteni, hogy mi és hogyan működik. És még egy komolytalan feladat megoldása közben is tanulsz valami újat.

A kimenet színezése

Például az ls parancs kimeneténél a linux terminál színeit szeretnénk beállítani.

Az ls dokumentációjából megértheted, hogy a kimenet színeinek beállítása a dircolors segédprogrammal történik, amely vagy a saját adatbázisából állítja be a színparamétereket, vagy a ~/.dircolors fájlból veszi azokat. Azt is említették, hogy a színhasználat inicializálása a ~/.bashrc, a shell beállítási fájlján keresztül történik, magukat a paramétereket pedig az LC_COLORS változóval határozzuk meg.

A .bashrc állományban a következő szkriptet találtuk:

Ennek lényege, hogy ellenőrzi a dircolors segédprogram jelenlétét a rendszerben, értéket rendel a változóhoz, és ha ez sikeres, akkor az ls minden egyes meghívásakor a --color=auto paramétert használja.

Ha a dircolors segédprogramot futtatjuk, akkor az kiadja az LC_COLOR változó értékét.

Az LC_COLORS változó értékét strukturált formában is ki lehet adni, a kulcs megadásával:

$ dircolors -p

Mivel a kimenet hosszú, itt nem adom meg.

Ha a dircolors -p -p > ~/.dircolors kimenetet átirányítjuk, akkor egy strukturált fájl jön létre, amelyből a színbeállításokat vesszük. Ennek a fájlnak a szerkesztésével és az ls kimenet színbeállításainak beállításával.

A létrehozott .dircolors fájlban van egy utalás:

A sorrend beállítása pontosvesszőn keresztül, és a linux konzolban a felsoroltak szerint kapjuk meg a kívánt színt. A linux terminál színei 30-tól 37-ig terjednek a betűtípus színére, és 40-től 47-ig a háttér színére. Például:

DIR 01;34 azt jelenti, hogy a könyvtárnevek félkövér és kék színűek lesznek.

De így csak nyolc színt kapunk, a modern terminál emulátorok pedig legalább 256 szín megjelenítésére képesek.

A színek beállításának más módjai is vannak. Például: EXEC 38;5;208;1 narancssárga vastag betűtípust ad a futtatható fájlok számára.

Hogy ne kelljen kézzel végigmenni a linux színein, van egy kész színtáblázat a színekről

A 38;5;x - ahol x a táblázatban szereplő szín - színértéket behelyettesítve megkapjuk a szükséges eredményt. Valami ilyesmit kapunk:

Hogyan működik ez? A lényeg az, hogy a terminál emulátorban kimenő információ színének beállítása ANSI escape kódok segítségével történik. Ez egy bizonyos karaktersorozat, amely nem jelenik meg a képernyőn, de befolyásolja a kimenetet. Azért hívják így, mert [ - "Esc" kóddal kezdődik. Mivel sok terminál és terminálemulátor létezik, ezek a vezérlőkódok szabványosítva vannak. A 30-tól 37-ig terjedő sorozaton keresztül történő színvezérlés az ECMA-48 szabvány. Erről a console_codes szakaszban találhatók információk.

A meghívó sor színezése

Ha már megértette, hogyan lehet a linux színeit az esc kódokon keresztül beállítani, akkor könnyen áttervezheti és színezheti a promptot. A ~/.bashrc fájlban definiált PS1 változó felelős a kimenetéért.

Linux Mintben az inicializáló szkript így néz ki:

Vagyis először megállapításra kerül, hogy a szkriptet root vagy normál felhasználó futtatta-e. Mivel az esetek túlnyomó többségében ez a második lehetőség, az első 'else' utáni sort kell szerkeszteni. A sor formátuma a bash dokumentációban, a "Promting" részben megfejthető. Ebből kiderül, hogy az esc-sorozatnak "["-val kell kezdődnie és "]"-val kell végződnie. Tehát: "A": "A": "A": "A": "A": "A": "A": "A":

  • [[01;32m] - zöld színt állít be;
  • u - kiadja a felhasználónevet;
  • h - a hoszt nevét adja ki;
  • [[00m] - törli a beállított attribútumokat;
  • [[01;34m] - kék színt állít be;
  • w - a munkakönyvtár nevét adja ki;
  • Hi - egy példa arra, hogy bármilyen származtatott szöveg kimenete lehetséges.

Mit lehet még kiadni a promptban:

  • d - a dátum, "Wed Dec 28" formátumban;
  • A - az idő, 24 órás formátumban;
  • ! - az aktuális parancs száma az előzményekben;
  • - a kimenet átvitele egy másik sorba;

Mutassunk be valami érdekesebbet:

PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '

És a prompt sor így fog kinézni: