Цветной вывод консоли linux

Цвета терминала Linux

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  What is pmap linux

В созданном файле .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, которая определена в файле ~/.bashrc

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

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

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

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

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

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

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

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

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Раскраска вывода команд в консоли

При выполнении команд в консоли мы чаще всего получаем в результате одноцветный текст, который бывает затруднительно прочитать. Для того, чтобы облегчить чтение результата в консоли, шрифт можно раскрасить. Это, к тому же, придаст оригинальности вашей системе.

Для того, чтобы раскрашивать вывод команд в консоли (подсвечивать результат), можно воспользоваться утилитой Generic Colouriser (grc). Для установки утилиты (в Ubuntu) выполните в командной строке:

Данная утилита использует файлы конфигурации, в которых прописаны регулярные выражения (Regular Expression), содержащие правила раскрашивания. Вместе с утилитой устанавливаются несколько файлов конфигурации для некоторых Linux команд (располагаются в директории /usr/share/grc). Информацию по составлению своих собственных файлов вы можете прочитать в README файле.

Теперь нам нужно прописать алиасы тем командам, вывод которых мы хотим раскрашивать. Фактически для этих команд мы будем вызывать утилиту grc с указанием того, какую команду нам нужно раскрасить. Алиасы прописываются в файле ~/.bashrc. Откроем файл .bashrc, для этого выполним в консоли команду:

Читайте также:  XML Developer's Guide

В конец файла добавим следующие строки:

if [ -f /usr/bin/grc ]; then alias cvs="grc --colour=auto cvs" alias diff="grc --colour=auto diff" alias esperanto="grc --colour=auto esperanto" alias gcc="grc --colour=auto gcc" alias irclog="grc --colour=auto irclog" alias ldap="grc --colour=auto ldap" alias log="grc --colour=auto log" alias netstat="grc --colour=auto netstat" alias ping="grc --colour=auto ping" alias proftpd="grc --colour=auto proftpd" alias traceroute="grc --colour=auto traceroute" alias wdiff="grc --colour=auto wdiff" fi

Тем самым мы прописали алиасы для команд, вывод которых будет раскрашиваться. Теперь выйдите и войдите в систему, чтобы применить данные настройки. Выполните для примера команду ping и вы должны получить красивый результат:

Источник

Оцените статью
Adblock
detector