Изменить цвет выделения в ubuntu

Обновлено: 06.07.2024

Одно из главных преимуществ Linux заключается в том, что при желании в нём можно настроить всё, что угодно. В этом и выражается преимущество проективных систем, над процедурными. Фактически, это конструктор, состоящий из отдельных блоков, каждый из которых можно настроить по своему желанию.

Особенно интересно, если не просто копируешь чужой "рецепт", а пытаешься разобраться, что и как устроено. И даже решая несерьезную задачу, узнаешь что-то новое.

Раскрашиваем цвета вывода ls

Как-то захотелось мне настроить цвета терминала linux в выводе команды ls. Ну не нравился блекло-фиолетовый цвет для каталогов в Linux Mint. Начал разбираться.

Из документации к ls, выяснил, что установка цветов для вывода осуществляется при помощи утилиты dircolors, которая либо устанавливает параметры цвета из своей собственной базы, либо берет их из файла

/.dircolors. Такого файла в моем домашнем каталоге не было. Также упоминалось, что инициализация использования цветов происходит через

/.bashrc, файл с настройками командной оболочки, а сами параметры определяются через переменную LC_COLORS.

Действительно, в .bashrc обнаружился скрипт следующего содержания:


Его суть сводится к проверке на наличие утилиты dircolors в системе, присваивания значения переменной и, при удачном выполнении, использовании параметра --color=auto при каждом вызове ls.

Если запустить утилиту dircolors, она выводит значение переменной LC_COLOR.


Также возможен вывод значения переменной LC_COLORS в структурированном виде, указанием ключа:

Поскольку вывод получается длинный, приводить его не буду.

/.dircolors, то будет создан структурированный файл, из которого и будут браться настройки цветов. Редактируя данный файл и устанавливаются настройки цвета для вывода ls.

В созданном файле .dircolors есть подсказка:


Устанавливая последовательность через точку с запятой и получаем нужный нам цвет в консоли linux, согласно перечисленным. Цвета терминала linux от 30 до 37 для цвета шрифта, а с 40 до 47 для фона. К примеру:

DIR 01;34 подразумевает, что имена директорий будут выделяться жирным шрифтом и синим цветом.

Но таким способом получается всего восемь цветов, а современные эмуляторы терминала способны выводить как минимум 256! Выяснилось, что существуют и другие способы установки цвета. К примеру, значение EXEC 38;5;208;1 - даёт оранжевый толстый шрифт у исполняемых файлов.

Чтобы не перебирать цвета linux вручную, есть уже готовая таблица цветов:


Подставляя в значение цвета 38;5;x - где x цвет из таблицы, получаем необходимый результат. Получается что-то вроде этого:


Но как это работает? Дело в том, что установка цвета вывода информации в эмуляторе терминала осуществляется при помощи ANSI escape-кодов. Это определенная последовательность символов, которая не выводится на экран, однако влияет на вывод. Называется она так, поскольку начинается с \033[ - кода "Esc". Поскольку терминалов и эмуляторов терминалов существует множество, эти управляющие коды стандартизированы. Управлением цветом через последовательность от 30 до 37 - это стандарт ECMA-48. Информация о нем содержится в разделе console_codes. А управление через 38;5;* - определено стандартом T.416. Более подробная информация есть, конечно же, в Википедии.

Раскрашиваем и изменяем строку приглашения:

Разобравшись, как устанавливать цвета linux через esc-коды, не составит труда переделать и раскрасить строку приглашения. За ее вывод отвечает переменная PS1, которая определена в файле

В Linux Mint скрипт ее инициализации имеет следующий вид:


То-есть сперва определяется, запустил ли скрипт root или обычный пользователь. Поскольку в подавляющем большинстве случаев имеет место именно второй вариант, то и редактировать нужно строку, следующую после первого 'else'. Формат строки расшифрован в документации по баш, в разделе "Promting". Из него следует, что esc-последовательность должна начинаться с "\[" и заканчиваться "\]". Таким образом:

  • [\033[01;32m\] - устанавливает зеленый цвет;
  • \u - выводит имя пользователя;
  • \h - выводит имя хоста;
  • [\033[00m\] - очищает установленные атрибуты;
  • [\033[01;34m\] - устанавливает синий цвет;
  • \w - выводит имя рабочей директории;
  • Привет! - пример того, что может быть выведен любой производный текст.

Что ещё можно вывести в строке приглашения:

  • \d - дату, в формате "Wed Dec 28";
  • \A - время в 24-часовом формате;
  • \! - номер текущей команды в истории;
  • \n - перенос вывода на другую строку;

Введем что нибудь поинтереснее:

И строка приглашения примет вид:


Так, не понял, а откуда взялась ёлка-то?

Ну ладно, на самом деле, если в конец .bashrc вставить echo -e "С Новым годом", то поздравление будет выводиться при каждом запуске терминала перед приглашением ввода. Соответственно, вывод можно раскрашивать каким угодно способом. А там уж и ёлку нарисовать не сложно.

Операционная система Ubuntu и другие дистрибутивы Linux привлекают пользователя тем, что они напоминают пластилин, т.е. в них можно "вылепить"/настроить всё так как нравится и удобно пользователю.

В этой статье мне хотелось бы рассказать о том, как можно приукрасить Виртуальную консоль или попросту - Терминал в Ubuntu.

Вот так терминал выглядит по умолчанию в последних релизах Ubuntu:


Но можно сделать его вот таким:




Короче говоря, у кого на сколько фантазии хватит.

Итак, как это делается или с чего начать?

Прежде всего нужно отметить, что всё что касается терминала. находится в файле .bashrc, который в свою очередь расположен в Домашней директории (папке), в скрытых файлах и папках, т.к. у этого файла точка в начале, обозначающая что он скрытый. Чтобы его увидеть, откройте файловый менеджер Nautilus и примените сочетание клавиш Ctrl+H либо выполните команду в терминале:

Если вы уже открыли редактор с файлом .bashrc, то не закрывайте, возможно он вам в дальнейшем понадобится для внесения изменений.

В текстовом файле .bashrc есть подобная строка:



Но чтобы вам не ломать голову, создавать заново строку, я подготовил её:

Скопируйте её, вставьте в конец файла .bashrc:


и нажмите Сохранить, но не закрывайте редактор. А теперь перезапустите терминал (закрыть/открыть) и вы должны увидеть следующее:


Если вас не устраивают эти цвета, то их можно легко изменить на свои из приведённой ниже таблице кодов:

Таблица цветовых кодов:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Light Gray 0;37 - светло-серый
Dark Gray 1;30 - тёмно-серый
Light Blue 1;34 - светло-синий
Light Green 1;32 - светло-зелёный
Light Cyan 1;36 - светло-голубой
Light Red 1;31 - светло-красный
Light Purple 1;35 - светло-сиреневый (пурпурный)
Yellow 1;33 - жёлтый
White 1;37 - белый
NoColor 0 - бесцветный

В текстовом редакторе с файлом .bashrc, в строке что вы установили, измените цифры указанные стрелкой перед буквой m из приведённых цветовых кодов:


Когда закончите с раскраской строки приглашения, закройте редактор с файлом, откройте терминал, наберите в нём любой текст и перейдите: Меню ->Правка ->Параметры профиля ->Цвета, должно открыться дополнительное окно настроек терминала:


Уберите крыжик из пункта Использовать цвета из системной темы (указан стрелкой) и кликните на кнопке Встроенные схемы, где уже есть несколько предложенных схем по умолчанию. Просто активируйте любую и смотрите как изменится цвет текста и фон терминала. Если вас не устраивают цвета по умолчанию, их можно изменить на пользовательские (ваши), кликнув на цветных прямоугольниках: Цвет текста и Цвет фона, выберите из предложенной гаммы нужный и кнопка Выбрать.

Когда вы "наиграетесь" с цветами текста и фона, в этом же окне перейдите во вкладку Фон:



Здесь же в пункте Затемнять прозрачность или изображение фона, передвиньте флажок в нужное положение, выставляя тем самым прозрачность в окне терминала до нужного вам восприятия.
Когда закончите все настройки закройте окно настроек терминала.

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

Если вы захотите вернуться к настройкам терминала по умолчанию, активируйте вновь пункты, которые были раньше и удалите строку установленную в файле .bashrc, не забыв сохранить его.

Читайте также: