воскресенье, 10 мая 2009 г.

Играем с цветами вывода 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!

Копируете статью — поставьте ссылку!

8 комментариев:

Maxim G. Ivanov комментирует...

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

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

цвет явно помягче дефолтного, что и требовалось.

Minoru комментирует...

Привет!

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

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

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

razum2um комментирует...

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

Minoru комментирует...

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

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

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

sessile polyp комментирует...

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

Minoru комментирует...

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

Анонимный комментирует...

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

Minoru комментирует...

Всегда пожалуйста ;) Обрати внимание, что я переехал на сторонний хостинг, так что в букмарки следует добавлять уже новый блог. Хотя в старом тоже есть что почитать, да.

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.

 
Blogger logo Debian logo Creative Commons License FeedBurner Subscribers Counter