Barvu terminálu Linux můžete přidat pomocí speciálního nastavení kódování ANSI, a to buď dynamicky v příkazu terminálu nebo v konfiguračních souborech, nebo můžete použít hotové motivy v emulátoru terminálu. Ať tak či onak, nostalgický zelený nebo jantarový text na černé obrazovce je zcela volitelný. Tento článek vám ukáže, jak si můžete Linux udělat tak barevný (nebo tak jednobarevný), jak jen chcete.
Možnosti terminálu
Moderní systémy mají obvykle ve výchozím nastavení alespoň xterm-256color, ale pokud se pokoušíte přidat barvu do terminálu bez úspěchu, měli byste zkontrolovat nastavení TERM.
Historicky byly unixové terminály doslova: fyzické body na doslovném konci (terminálu) sdíleného počítačového systému, kam mohli uživatelé zadávat příkazy. Byly jedinečné oproti dálnopisům (proto máme v Linuxu dodnes zařízení /dev/tty), které se často používaly k zadávání příkazů na dálku. Terminály měly zabudované CRT monitory, takže uživatelé mohli sedět u terminálu ve své kanceláři a komunikovat přímo s hlavním počítačem. CRT monitory byly drahé – jak na výrobu, tak na ovládání; bylo jednodušší nechat počítač vyplivnout hrubý text ASCII než se starat o vyhlazování a další vychytávky, které moderní počítačoví odborníci považují za samozřejmost. Vývoj technologií však i tehdy probíhal rychle a rychle se ukázalo, že s tím, jak byly navrhovány nové terminály pro zobrazování videa, je třeba, aby byly volitelně k dispozici nové funkce.
Například nový fantastický terminál VT100 uvedený na trh v roce 1978 podporoval ANSI barvy, takže pokud uživatel identifikoval typ terminálu jako vt100, mohl počítač poskytovat barevný výstup, zatímco základní sériové zařízení takovou možnost mít nemuselo. Stejný princip platí i dnes a nastavuje se pomocí proměnné prostředí TERM. Definici TERM můžete zkontrolovat příkazem echo:
$ echo $TERM
xterm-256color
Zastaralý (ale v zájmu zpětné kompatibility v některých systémech stále udržovaný) soubor /etc/termcap definoval možnosti terminálů a tiskáren. Jeho moderní verzí je terminfo, umístěný v /etc nebo /usr/share, v závislosti na vaší distribuci. Tyto soubory obsahují seznam funkcí dostupných v různých typech terminálů, z nichž mnohé jsou definovány historickým hardwarem: existují definice pro vt100 až vt220 a také pro moderní softwarové emulátory jako xterm a Xfce. Většině softwaru je jedno, jaký typ terminálu používáte; ve vzácných případech se při přihlašování k serveru, který kontroluje kompatibilní funkce, může objevit varování nebo chyba o nesprávném typu terminálu. Pokud je váš terminál nastaven na profil s velmi malým počtem funkcí, ale víte, že emulátor, který používáte, jich umí více, můžete nastavení změnit definováním proměnné prostředí TERM. To provedete exportem proměnné TERM do konfiguračního souboru ~/.bashrc:
export TERM=xterm-256color
Uložte soubor a znovu načtěte nastavení:
$ source ~/.bashrc
Barevné kódy ANSI
Moderní terminály zdědily escape sekvence ANSI pro “meta” funkce. Jedná se o speciální sekvence znaků, které terminál interpretuje jako akce místo znaků. Například tato sekvence vymaže obrazovku až do další výzvy:
$ 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
Upravte svůj místní seznam podle potřeby. Až budete se svými volbami spokojeni, soubor uložte. Vaše nastavení barev je pouze databází a ls je nemůže použít přímo, ale můžete použít dircolors k získání shellkódu, který můžete použít k nastavení LS_COLORS:
$ 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
Zkopírujte a vložte tento výstup do svého souboru ~/.bashrc a znovu načtěte. Případně můžete tento výstup vypsat přímo do svého souboru .bashrc a znovu načíst.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Můžete také přimět Bash, aby při spuštění přeložil soubor .dircolors, místo abyste převod prováděli ručně. Reálně pravděpodobně nebudete měnit barvy často, takže to může být příliš agresivní, ale je to možnost, pokud plánujete často měnit barevné schéma. Do souboru .bashrc přidejte toto pravidlo:
] && eval "`dircolors --sh $HOME/.dircolors`"
Pokud máte v domovském adresáři soubor .dircolors, Bash jej při spuštění vyhodnotí a nastaví podle něj LS_COLORS.
Color
Barvy v terminálu jsou snadným způsobem, jak si poskytnout rychlý vizuální odkaz na konkrétní informace. Nemusíte se však o ně chtít příliš opírat. Koneckonců barvy nejsou univerzální, takže pokud váš systém používá někdo jiný, nemusí barvy vidět stejně jako vy. Kromě toho, pokud používáte různé nástroje pro interakci s počítači, můžete také zjistit, že některé terminály nebo vzdálená připojení neposkytují barvy, které očekáváte (nebo barvy vůbec).
Kromě těchto varování mohou být barvy v některých pracovních postupech užitečné a zábavné, takže si vytvořte databázi .dircolor a přizpůsobte si ji podle svých představ.
.