Kir Kolyshkin (k001) wrote,
Kir Kolyshkin
k001

Category:

Про цвета в терминале

Современные эмуляторы терминала поддерживают 256 цветов. Но многие программы про это не знают, потому что эмулятор выставляет переменную окружения TERM=xterm, а в terminfo про xterm прописано, что у него 8 цветов:
$ echo $TERM
xterm
$ tput colors
8

Но может, у вас всё так и должно быть? Проверить легко -- запустить вот такой код:

for ((x=0; x<=255; x++));do echo -e "${x}:\033[48;5;${x}mcolor\033[000m";done
(если заменить 48 на 38, будет меняться цвет текста, а не цвет фона)

Если вам напечатают много красивых цветов, то, значит, ваш эмулятор терминала умеет 256 цветов. Что нужно сделать, чтобы об этом узнали программы? Да просто выставить TERM=xterm-256color (убедившись, что у вас есть такой файл в /usr/share/terminfo/x/). Лучше всего сделать сразу в настройках эмулятора терминала (у меня в XFCE Terminal это Preferences -> Advanced -> $TERM setting).

Потом можно посмотреть, что изменилось:
$ echo $TERM
xterm-256color
$ tput colors
256


Можно запустить vim и увидеть, что цвета чуток изменились (если вы используете цветовую схему и подсветку синтаксиса). Чтобы убедиться, что vim "увидел", что у вас 256 цветов, напишите :set t_Co -- в ответ должны увидеть t_Co=256.

И даже для color ls предусмотрена цветовая схема с 256 цветами (она потом сама подгрузится в /etc/profile.d/colorls.sh, когда bash будет исполнять profile, а пока сделаем ручками):
$ eval $(dircolors -b /etc/DIR_COLORS.256colors)
$ ls

Всякие разные ESC-последовательности для терминала можно посмотреть в man console_codes. Всё вышеприведённое справедливо для Fedora 9; your mileage may vary, there are no guarantees etc.
Tags: howto, linux
Subscribe
Comments for this post were disabled by the author