как поменять цвет текста в терминале linux
Цвета терминала Linux
Одно из главных преимуществ Linux заключается в том, что при желании в нём можно настроить всё, что угодно. В этом и выражается преимущество проективных систем, над процедурными. Фактически, это конструктор, состоящий из отдельных блоков, каждый из которых можно настроить по своему желанию.
Особенно интересно, если не просто копируешь чужой «рецепт», а пытаешься разобраться, что и как устроено. И даже решая несерьезную задачу, узнаешь что-то новое.
Раскрашиваем цвета вывода ls
Как-то захотелось мне настроить цвета терминала linux в выводе команды ls. Ну не нравился блекло-фиолетовый цвет для каталогов в Linux Mint. Начал разбираться.
Из документации к ls, выяснил, что установка цветов для вывода осуществляется при помощи утилиты dircolors, которая либо устанавливает параметры цвета из своей собственной базы, либо берет их из файла
/.dircolors. Такого файла в моем домашнем каталоге не было. Также упоминалось, что инициализация использования цветов происходит через
/.bashrc, файл с настройками командной оболочки, а сами параметры определяются через переменную LC_COLORS.
Если запустить утилиту dircolors, она выводит значение переменной LC_COLOR.
Также возможен вывод значения переменной LC_COLORS в структурированном виде, указанием ключа:
Поскольку вывод получается длинный, приводить его не буду.
/.dircolors, то будет создан структурированный файл, из которого и будут браться настройки цветов. Редактируя данный файл и устанавливаются настройки цвета для вывода ls.
Устанавливая последовательность через точку с запятой и получаем нужный нам цвет в консоли linux, согласно перечисленным. Цвета терминала linux от 30 до 37 для цвета шрифта, а с 40 до 47 для фона. К примеру:
DIR 01;34 подразумевает, что имена директорий будут выделяться жирным шрифтом и синим цветом.
Чтобы не перебирать цвета linux вручную, есть уже готовая таблица цветов:
Раскрашиваем и изменяем строку приглашения:
Разобравшись, как устанавливать цвета linux через esc-коды, не составит труда переделать и раскрасить строку приглашения. За ее вывод отвечает переменная PS1, которая определена в файле
В Linux Mint скрипт ее инициализации имеет следующий вид:
То-есть сперва определяется, запустил ли скрипт root или обычный пользователь. Поскольку в подавляющем большинстве случаев имеет место именно второй вариант, то и редактировать нужно строку, следующую после первого ‘else’. Формат строки расшифрован в документации по баш, в разделе «Promting». Из него следует, что esc-последовательность должна начинаться с «\[» и заканчиваться «\]». Таким образом:
Что ещё можно вывести в строке приглашения:
Введем что нибудь поинтереснее:
И строка приглашения примет вид:
Так, не понял, а откуда взялась ёлка-то?
Как изменить цвет текста строки приглашения в терминале Linux
Использование цвета в строке приглашения терминала
В большинстве терминалов для Linux доступен некоторый набор цветов, которые вы можете использовать для стилизации строки приглашения или любого другого текста. В терминале можно задать не только цвет текста, но и цвет фона, а также применить форматирование. Чтобы задать цвет для строки приглашения, необходимо изменить значение переменной PS1 задав в ней специальный цветовой код для того текста, который хотим раскрасить. Подробнее о строке приглашения вы можете узнать из этой статьи.
Существуют терминалы, которые поддерживают следующее количество цветов:
Чтобы узнать сколько цветов поддерживает ваш терминал, введите следующую команду.
Изменение цвета текста в терминале с помощью управляющих символов (8/16 цветов)
Цвет в терминалах задается с помощью специальных управляющих символов:
Результат будет следующим.
Изменение цвета текста для строки приглашения в терминале Bash
В представленной ниже таблице вы можете узнать коды доступных цветов для форматирования текста в терминале.
Цвет | Обычный | Яркий | Фон | Яркий фон |
---|---|---|---|---|
Black | 30 | 90 | 40 | 100 |
Red | 31 | 91 | 41 | 101 |
Green | 32 | 92 | 42 | 102 |
Brown / Yellow | 33 | 93 | 43 | 103 |
Blue | 34 | 94 | 44 | 104 |
Magenta | 35 | 95 | 45 | 105 |
Cyan | 36 | 96 | 46 | 106 |
White | (light gray) 37 | 97 | 47 | 107 |
Default color | 39 | 49 |
Также таблица вариантов изменения форматирования текста.
Тип форматирования текста | Код |
---|---|
полная очистка форматирования | 0 |
жирный/яркий текст | 1 |
затемненный цвет теста | 2 |
наклонный текст | 3 |
подчеркнутый текст | 4 |
медленно мерцающий текст | 5 |
быстро мерцающий текст | 6 |
обратить цвет текста в цвет фона | 7 |
спрятанный текст (для паролей) | 8 |
зачеркнутый текст | 9 |
очистка жирности/яркости текста | 21 |
очистка затемнения текста | 22 |
очистка наклона текста | 23 |
очистка подчеркивания текста | 24 |
очистка мерцания текста | 25 |
очистка мерцания текста | 26 |
очистка фона | 27 |
очистка скрытия текста | 28 |
очистка зачеркивания текста | 29 |
Некоторые терминалы не поддерживают различные типы форматирования.
Для полноты картины рассмотрим несколько примеров стилизации строки приглашения.
Форматирования строки приглашения в терминале Bash c использованием палитры в 16 цветов
В конце статьи вы можете ознакомиться с Bash-скриптом, который наглядно покажет как форматирование поддерживается в вашем терминале.
Изменение цвета текста в терминале с помощью управляющих символов (88/256 цветов)
Для терминалов с поддержкой 88/256 цветов используются следующий порядок управляющих символов:
Примеры изменения цвета для строки приветствия могут выглядеть следующим образом.
Форматирование строки приглашения в терминале Bash c использованием палитры в 256 цветов
В последнем разделе вы найдете Bash-скрипт, который выведет карту всех 256 цветов в терминале, чтобы вам было удобней определиться с выбором.
Изменение цвета текста в терминале с помощью управляющих символов (16777216 цветов)
Терминалы с поддержкой 24-битной версии управляющих символов ANSI, способны выводить почти полный спектр видимых человеком цветов в формате RGB.
Здесь также как и в двух предыдущих вариантах используются управляющие символы. Только теперь для каждого цвета (красный, зеленый, синий) выделяется по одному байту, т.е. для каждого цвета вы можете задать промежуток от 0 до 255.
Несколько примеров использования RGB формата.
Форматирование строки приветствия в CentOS с помощью цветовой модели RGB
Сохранение цветового кода в переменных
Если сильно увлечься с форматированием, то можно получить практически не читаемый код. Для того чтобы избежать излишнего громаждения управляющих символов рекомендую сохранять код каждого цвета в переменную и подставлять ее в нужное место.
Сохранить цвет в переменную можно следующим образом.
Изменение цвета текста в терминале с помощью команды tput
Использование команды tput для форматирования строки приглашения
Коды доступных цветов представлены в таблице ниже.
Цвет | Black | Red | Green | Yellow | Blue | Magenta | Cyan | White |
---|---|---|---|---|---|---|---|---|
Код | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
С помощью tput можно также задавать стили форматирования.
tput bold # Включить жирность
tput dim # Затемнить текст
tput smul # Включить подчеркивание
tput rmul # Отключить подчеркивание
tput rev # Поменять цвет текста на цвет фона
Команда tput имеет множество возможностей по управлению текстом и терминалом в целом. Подробнее об этой команде вы можете узнать на справочных страницах.
Как сохранить отформатированную строку приглашения
В этой статье мы подробно рассмотрели все варианты установки цветов для текста в терминале Linux. Чтобы сохранить раскрашенную строку приветствия, то вставьте нужное значение переменной PS1 в конец файла
Вы также можете сохранить строку приветствия раскрашенную в градиенте. Для этого вставьте следующий код в файл
Как поменять цвет текста в терминале linux
По-умолчанию терминал или консоль(KDE), выглядит не очень привлекательно, хотя можно изменить цветовые схемы, которые доступны в настройке терминала, но мы можем изменить чуть-ли не каждый символ в терминале, и в этой статье я покажу как это сделать.
Мы можем редактировать цвет имени текущего пользователя или сделать отступ, или вообще убрать имя пользователя, а поставить вместо него какой-то символ, и все это можно сделать, просто отредактировав файл bashrc, который находится в нашей домашней директории.
Для редактирования файла, откройте терминал(Ctrl+Alt+T), и введите команду
И найдите вот такую строчку
В этой строке указаны все наши цвета для имени пользователя, имени хоста и др.
Для назначения своего цвета, советую вам скопировать вот эту строку
и вставить в конец вашего файла bashrc
Сохраняем с помощью сочетания клавиш Ctrl+O, и для закрытия файла используйте Ctrl+X.
А теперь давайте немного разберем, из чего состоит эта строка.
PS1=’\[\e[1;33m\]\u — этот кусочек строки означает что мы присваиваем имени нашего пользователя желтый жирный цвет.
\[\e[1;35m\]@ — далее идет символ собачки с фиолетовым жирным цветом
\[\033[1;32m\]\h — имя компьютера в сети жирного зеленого цвета
\[\e[1;34m\]\w — текущая директория — жирным голубым цветом
\[\e[1;32m\]\$ — знак доллара раскрашен жирным зеленым цветом
\[\e[1;37m\]’ — и последний белый цвет который обозначает то что мы будем вводить в терминале.
Вот мы и разобрали строку с помощью которой вы сможете придать вашему терминалу, немного свежести.
А что делать если вы захотите открыть терминал с root-правами?
Для того чтобы изменить цвет строк, когда вы используете root-права, откройте этот же файл только с root-правами
И тоже вставьте в конец файла вот такой кусок кода
Который перекрасит приглашение root в красный цвет, текущую директорию в синий, а цвет ввода текста в зеленый цвет.
А с помощью этой таблици вы можете подобрать цвет, который вам по душе.
Обычный | Жирный | Подчёркнутый | Фоновый |
‘\e[0;30m’ # Black | ‘\e[1;30m’ # Black | ‘\e[4;30m’ # Black | ‘\e[40m’ # Black |
‘\e[0;31m’ # Red | ‘\e[1;31m’ # Red | ‘\e[4;31m’ # Red | ‘\e[41m’ # Red |
‘\e[0;32m’ # Green | ‘\e[1;32m’ # Green | ‘\e[4;32m’ # Green | ‘\e[42m’ # Green |
‘\e[0;33m’ # Yellow | ‘\e[1;33m’ # Yellow | ‘\e[4;33m’ # Yellow | ‘\e[43m’ # Yellow |
‘\e[0;34m’ # Blue | ‘\e[1;34m’ # Blue | ‘\e[4;34m’ # Blue | ‘\e[44m’ # Blue |
‘\e[0;35m’ # Purple | ‘\e[1;35m’ # Purple | ‘\e[4;35m’ # Purple | ‘\e[45m’ # Purple |
‘\e[0;36m’ # Cyan | ‘\e[1;36m’ # Cyan | ‘\e[4;36m’ # Cyan | ‘\e[46m’ # Cyan |
‘\e[0;37m’ # White | ‘\e[1;37m’ # White | ‘\e[4;37m’ # White | ‘\e[47m’ # White |
А вы разукрасили свой терминал? Поделитесь скриншотами в комментариях.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Разноцветные терминалы
В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле
/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).
Для начала рассмотрим простой вариант, мой любимый формат командной строки.
Результат будет вот такой:
Это обычное использование переменной PS1, но если бы я не начал с этого — рассказ был бы неполным. Обычно в переменной PS1 с помощью специальных последовательностей символов определяют формат приглашения для ввода команд. Подробный список этих последовательностей можно почитать в документации к bash, в данном примере:
Просто заношу коды цвета в переменные. Но, как вы заметили, что способ задания цвета для курсора и для текста командной строки — разный. Почему-то так исторический получилось. Чтобы понять, какой цвет каким кодом кодируется, есть подходящая картинка.
Посредине — обозначение цвета для цвета курсора, снизу — обозначение цвета для текста. Как вы можете увидеть, что я для текста и курсора использую цвет морской волны. Т.к. название сервера petrel («буревестник»), то он ассоциируется у меня с этим цветом.
Еще две переменные определяю с чисто красным цветом, он будет использоваться для маркировки терминалов привелигированного пользователя (root’а).
В результате у нас должно получится так, как на картинке в самом начале публикации.
bash: меняем цвета и настраиваем консоль под себя
Лично мне не нравится стандартное, бесцветное, приглашение bash в консоли:
Можно его немного поправить – добавить цвета и вывод дополнительной информации.
Редактируем (или создаем, если его нет) в домашней папке пользователя файл .bash_profile :
и в него записываем такое:
В результате, консоль будет выглядеть так:
Для рута тоже можно внести изменения:
Получим такую картинку:
Разница только в цвете вывода имени пользователя – для root будет красный цвет, что бы напоминать себе быть внимательнее :-).
Немного расшифровки строк:
PS1=” – это значение переменной bash, указывающее строку приглашения ввода;
t – текущее время в формате HH:MM:SS ;
[ – начало последовательности непечатных символов;
e – обозначение экранирования ASCII символа, по другому можно записать как 33 ;
[01;31m] – задаем цвет следующего параметра в данном случае 01 – напечатать жирным шрифтом 31m – красный цвет, о цветах ниже;
h – имя хоста (я не использовал);
e[01;34m] – цвет для вывода W ;
W название текущей директории (неполный путь, я не использую);
w путь и текущая категория;
[e[00m] – самый последним задается цвет печатаемого текста;
Типы и цвета шрифта:
e[x;yym]
здесь x – тип шрифта
1 – жирный текст
4 – подчеркнутый текст
7 – инверсия, фон цвета текста.
30 черный
31 красный
32 зеленый
33 жёлтый/оранжевый
34 голубой
35 фиолетовый
36 цвета морской волны
37 светло-серый
39 по умолчанию
P.S. На самом деле, вывод h (имя хоста) бывает иногда очень полезным.
UPD 05 апр 2015: до сих пор пользуюсь почти той же схемой: