Играем с цветами вывода ls

Вы работаете в консоли или терминале с тёмным фоном? Вы используете ls –color=auto? Как вам цвет для директорий, нравится?

На мой взгляд, тёмно-синий шрифт на чёрном фоне — это просто убийство глаз, поэтому я поставил себе за цель поменять цвет на какой-то более читабельный и удобный.

За цвета для ls «отвечает» утилита dircolors. При запуске она выдаёт команды, которые нужно передать шеллу для настройки цветов. Обычно в конфигах шеллов есть отдельные строки, которые запускают dircolors и создают алиас для ls вида ls=‘ls –color=auto’. В стандартном конфиге для bash в Debian Lenny эти строки выглядят так:

if [ "$TERM" != "dumb" ]; then
  eval "`dircolors -b`"
  alias ls='ls -l -F --color=auto'
fi

Для zsh, который я сейчас использую, необходимые строки надо добавить самостоятельно:

eval `dircolors`
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

Отлично. Уже ясно, откуда берутся настройки цветов — осталось только научиться их менять. Для этого читаем ман…

…Читаем ман и узнаём, что dircolors’у можно передать файл, из которого будут прочитаны настройки. Для создания файла выполняем простую инструкцию:

dircolors -p >~/.dir_colors

В результате получаем в домашнем каталоге дотфайл, который осталось лишь поправить.

Пожалуй, стоит начать с чтения комментариев. Из них мы узнаём, что вид вывода задаётся перечислением атрибутов через точку с запятой. Доступны следующие атрибуты:
Атрибуты
00 ничего
01 полужирный
04 подчёркивание
05 мигание
07 реверс
08 скрытие
Цвета текста
30 чёрный
31 красный
32 зелёный
33 жёлтый
34 синий
35 розовый
36 циан
37 белый
Цвета фона
40 чёрный
41 красный
42 зелёный
43 жёлтый
44 синий
45 розовый
46 циан
47 белый

За цвет директории отвечает параметр DIR. У меня он выглядел так:

DIR 01;34 #directory

Я заменил это на следующее:

DIR 01;30;47 # directory

, то есть чёрный шрифт на белом фоне. Выглядит немного неуклюже и необычно, но это оттого, что я ни разу не дизайнер :) Найдёте приятную комбинацию — обязательно напишите комментарий или e-mail!

Осталась самая малость — научить шелл применять сделанные нами настройки. Это просто — в уже приводившихся участках конфигов dircolors должен быть заменён на dircolors ~/.dir_colors. Настройки будут применены после сохранения конфига и перезагрузки шелла :)

Have fun!

Comments (migrated from Blogger)

On 2009-05-10T17:36:00.000+03:00, Maxim G. Ivanov wrote:

Познавательно, но когда передо мной возникла такая же проблема, я её решил без использования этой утилиты (по какой-то причине не знал о ней до прочтения этой заметки). Я правил настройки терминала в ~/.Xresources (естественно для тех, которые ими управляются, например, xterm, rxvt-unicode).

Цвета директорий определяются переменной color12. Так, у меня записано для rxvt-unicode в ~/.Xresources следующее:

urxvt*color12:     #8FB9DC
цвет явно помягче дефолтного, что и требовалось.

On 2009-05-10T18:34:00.000+03:00, Programmaster wrote:

Привет!

по какой-то причине не знал о ней до прочтения этой заметки
Я же по какой-то причине не знал о возможности поправить это через ~/.Xresources :)

В принципе, твоё решение более гибкое, т.к. позволяет задать произвольный цвет в RRGGBB. С другой стороны, ~/.Xresources играет роль только в иксах — в tty он уже побоку. Я, вобщем-то, не так уж часто бываю в tty, но всё же случается — иногда комп включается только для того, чтобы залить на флешку какой-то файлик.

В общем, спасибо за информацию! :)

On 2009-07-10T10:32:28.848+03:00, razum2um wrote:

тёмно-синий шрифт на чёрном фоне
Это да, страшно, наверное.
Но не вижу ничего плохого в синем полужирном на сером фоне (aka “Темная пастель” в kde)

On 2009-07-10T12:03:10.457+03:00, Programmaster wrote:

razum2um пишет…
> тёмно-синий шрифт на чёрном фоне
Это да, страшно, наверное.

Сначала ничего, а вот к вечеру, когда глаза устанут, становится очень неприятно…

Но не вижу ничего плохого в синем полужирном на сером фоне (aka “Темная пастель” в kde)
Дело в том, что от KDE я отошёл уже достаточно давно, в качестве терминала юзаю urxvt — там никаких цветовых схем нет, просто окошко с шеллом, поэтому проблему пришлось решать именно со стороны шелла. Хотя вариант, предложенный Максимом Ивановым (первый комментарий), тоже имеет право на жизнь — может быть, даже большее, чем мой.

On 2010-05-18T00:26:21.377+03:00, sessile polyp wrote:

Добрый день. замечательная статья, спасибо огромное:-)… Интересный сайт хорошо описали

On 2010-05-18T02:33:03.582+03:00, Minoru wrote:

Спасибо ☺ Заходите ещё! ;)

On 2012-05-13T19:28:32.167+03:00, Анонимный wrote:

Огромное спасибо, человек! Умаялся, настраивая цвета для urxvt-терминала. Ставлю, тестирую на ls и нулевой эффект.
Добавлю-ка я блог в букмарки. :)
~Zyamilon

On 2012-05-13T19:56:01.313+03:00, Minoru wrote:

Всегда пожалуйста ;) Обрати внимание, что я переехал на сторонний хостинг (UPD: т.е. сюда, на blog.debiania.in.ua), так что в букмарки следует добавлять уже новый блог. Хотя в старом тоже есть что почитать, да.

Drop me a line! (wonder where’s the comments form?)