A Linux-terminál színét speciális ANSI-kódolási beállításokkal adhatja hozzá, akár dinamikusan egy terminálparanccsal vagy konfigurációs fájlokban, akár a terminálemulátorban található kész témákat használhatja. Akárhogy is, a fekete képernyőn megjelenő nosztalgikus zöld vagy borostyánszínű szöveg teljesen opcionális. Ez a cikk bemutatja, hogyan teheted a Linuxot olyan színessé (vagy olyan egyszínűvé), amilyenné csak akarod.
Terminálképességek
A modern rendszerek általában legalább az xterm-256color alapértelmezést használják, de ha sikertelenül próbálsz színt adni a terminálodnak, ellenőrizd a TERM-beállítást.
A Unix-terminálok történelmileg szó szerint ez voltak: fizikai pontok egy közös számítógépes rendszer szó szerinti végpontján (terminál), ahol a felhasználók parancsokat írhattak be. Ezek különböztek a távírógépektől (ezért vannak ma is /dev/tty eszközök a Linuxban), amelyeket gyakran használtak a parancsok távoli kiadására. A terminálok beépített CRT-monitorokkal rendelkeztek, így a felhasználók az irodájukban egy terminálhoz ülve közvetlenül kapcsolatba léphettek a nagyszámítógépekkel. A CRT-monitorok drágák voltak – mind az előállításuk, mind a vezérlésük; egyszerűbb volt, hogy a számítógép nyers ASCII-szöveget adjon ki, minthogy az élsimítással és más finomságokkal foglalkozzanak, amelyeket a modern számítógépesek természetesnek vesznek. A technológia fejlődése azonban már akkor is gyorsan történt, és hamar nyilvánvalóvá vált, hogy az új videokijelzős terminálok tervezésekor új képességeket kellett opcionálisan elérhetővé tenni.
Az 1978-ban megjelent új, divatos VT100 például támogatta az ANSI színt, így ha a felhasználó a terminál típusát vt100-ként azonosította, akkor a számítógép képes volt színes kimenetet szolgáltatni, míg egy egyszerű soros eszköz nem feltétlenül rendelkezett ilyen lehetőséggel. Ugyanez az elv ma is érvényes, és ezt a TERM környezeti változó állítja be. A TERM definícióját az echo:
$ echo $TERM
xterm-256color
paranccsal ellenőrizheti. Az elavult (de a visszafelé kompatibilitás érdekében egyes rendszereken még mindig fenntartott) /etc/termcap fájl definiálta a terminálok és nyomtatók képességeit. Ennek modern változata a terminfo, amely a disztribúciótól függően az /etc vagy a /usr/share állományban található. Ezek az állományok felsorolják a különböző terminálokban elérhető funkciókat, amelyek közül sokat a történelmi hardverek határoznak meg: vannak definíciók a vt100-tól a vt220-ig, valamint a modern szoftveres emulátorokhoz, mint az xterm és az Xfce. A legtöbb szoftvert nem érdekli, hogy milyen termináltípust használsz; ritka esetekben előfordulhat, hogy figyelmeztetést vagy hibát kapsz a helytelen termináltípusról, amikor bejelentkezel egy olyan szerverre, amely ellenőrzi a kompatibilis funkciókat. Ha a terminálod egy nagyon kevés funkcióval rendelkező profilra van beállítva, de tudod, hogy az általad használt emulátor többre képes, akkor a TERM környezeti változó meghatározásával megváltoztathatod a beállítást. Ezt úgy teheti meg, hogy a TERM változót a ~/.bashrc konfigurációs fájlba exportálja:
export TERM=xterm-256color
Mentse el a fájlt, és töltse be újra a beállításait:
$ source ~/.bashrc
ANSI színkódok
A modern terminálok ANSI escape szekvenciákat örököltek a “meta” funkciókhoz. Ezek olyan speciális karaktersorozatok, amelyeket a terminál karakterek helyett műveletekként értelmez. Ez a szekvencia például törli a képernyőt a következő promptig:
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
A helyi lista tetszés szerinti szerkesztése. Ha elégedett a választással, mentse el a fájlt. A színbeállításaid csak egy adatbázis, és az ls közvetlenül nem tudja használni őket, de a dircolors segítségével shellcode-ot kaphatsz, amivel beállíthatod az LS_COLORS-t:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
Másold be a kimenetet a ~/.bashrc fájlodba, és töltsd be újra. Alternatív megoldásként ezt a kimenetet közvetlenül a .bashrc fájlodba is dumpolhatod és újratöltheted.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Az átalakítás manuális elvégzése helyett a Bash-t is ráveheted, hogy a .dircolors-t indításkor oldja fel. Reálisan nézve valószínűleg nem fogod gyakran változtatni a színeket, így ez talán túlságosan agresszív, de ez egy lehetőség, ha azt tervezed, hogy gyakran változtatod a színsémádat. A .bashrc fájlodban add hozzá ezt a szabályt:
] && eval "`dircolors --sh $HOME/.dircolors`"
Ha van egy .dircolors fájl a főkönyvtáradban, a Bash indításkor kiértékeli azt, és ennek megfelelően állítja be az LS_COLORS-t.
Color
A terminálodban a színek egy egyszerű módja annak, hogy gyors vizuális hivatkozást adj magadnak bizonyos információkhoz. Azonban nem biztos, hogy túl erősen akarsz rájuk támaszkodni. Végül is a színek nem univerzálisak, így ha valaki más használja a rendszeredet, lehet, hogy nem ugyanúgy látja a színeket, mint te. Továbbá, ha többféle eszközt használ a számítógépekkel való interakcióhoz, akkor azt is tapasztalhatja, hogy egyes terminálok vagy távoli kapcsolatok nem az elvárt színeket (vagy egyáltalán nem az elvárt színeket) biztosítják.
A figyelmeztetéseket félretéve, a színek hasznosak és szórakoztatóak lehetnek bizonyos munkafolyamatokban, ezért hozzon létre egy .dircolor adatbázist, és testreszabhatja kedvére.