Цветовое оформление консольного вывода
Кратко о том, как сделать для своей консольной программы или скрипта цветной вывод текста, а также дополнить его другими элементами оформления. Собственно, назначить можно цвет текста, цвет фона под ним, сделать текст жирным, подчеркнутым, невидимым и даже мигающим.
Шаблон для использования в современных командных оболочках и языках программирования таков: \x1b[. m. Это ESCAPE-последовательность, где \x1b обозначает символ ESC (десятичный ASCII код 27), а вместо «. » подставляются значения из таблицы, приведенной ниже, причем они могут комбинироваться, тогда нужно их перечислить через точку с запятой.
атрибуты | |
0 | нормальный режим |
1 | жирный |
4 | подчеркнутый |
5 | мигающий |
7 | инвертированные цвета |
8 | невидимый |
цвет текста | |
30 | черный |
31 | красный |
32 | зеленый |
33 | желтый |
34 | синий |
35 | пурпурный |
36 | голубой |
37 | белый |
цвет фона | |
40 | черный |
41 | красный |
42 | зеленый |
43 | желтый |
44 | синий |
45 | пурпурный |
46 | голубой |
47 | белый |
Теперь несколько примеров. Все это можно опробовать, введя в консольном окне echo -e «текст примера» .
Ввод | Результат |
\x1b[31mTest\x1b[0m | |
\x1b[37;43mTest\x1b[0m | |
\x1b[4;35mTest\x1b[0m |
Обратите внимание, что во всех трех случаях после слова Test идет последовательность \x1b[0m, которая просто сбрасывает стиль оформления на стандартный.
Цвет текста в консоли
Добрый день можно ли сделать чтобы введенные в консоли отображались не стандартным цветом? Сейчас если проскролить терминал, то все выводится белым цветом и введенные команды и их результат (за исключением некоторых).
Тогда уж что за шелл, на самом деле.
терминал стандартный в Ubuntu 12.04, shell.. эм =) я так понимаю Unity3D это и есть оболочка
в самом терминале нет что ли цветовых схем?
поклянить, что все настройки посмотрел
Да нет, человек хочет промпт покрасить же, причём здесь цветовые схемы?
Перечитай ещё раз описание
Не понятно, что имелось ввиду.
//Ну, сейчас ТС загрузнет.
Гугл на твой вопрос даёт ответы.
Практически на любые, но нужно же относиться с пониманием к людям с нарушениями цнс.
Походу это то, что мне и нужно было
нормально раскрасить не получается, выводятся косяки.. вот текущее значение PS1: «\[\e]0;\u@\h: \w\a\]$
По дефолту в убунте в гномотерминале, насколько я помню, цветовая схема tango или что-то около того. Он умеет цвета, например, в grep. А если хочется введённые команды выделять цветом, то это надо ковырять промпты. Соответственно если нужно «цветной» вывод всяких там ls, то это тоже в bashrc правится алиасами.
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 путь и текущая категория;
$ если ваш UID = 0 в конце будет напечатана #, в противном случае $ — это чтобы понять под кем вы сейчас сидите;
[e[00m] — самый последним задается цвет печатаемого текста;Типы и цвета шрифта:
e[x;yym]
здесь x — тип шрифта
1 — жирный текст
4 — подчеркнутый текст
7 — инверсия, фон цвета текста.
30 черный
31 красный
32 зеленый
33 жёлтый/оранжевый
34 голубой
35 фиолетовый
36 цвета морской волны
37 светло-серый
39 по умолчанию
Что бы не устанавливать параметры «навсегда», можно указать параметры только для текущей сессии. Для этого достаточно строку с параметрами задать не через файл .bashrc или .bash_profile , а просто указать в командной строке:
P.S. На самом деле, вывод h (имя хоста) бывает иногда очень полезным.
UPD 05 апр 2015: до сих пор пользуюсь почти той же схемой:
Изменение цветов в консоли Linux
Люблю, когда в моем кабинете светло. С другой стороны не люблю выкручивать яркость монитора, т.к. довольно часто работаю по вечерам/ночам. Смесь этих факторов, дает некоторые неудобства и одно из них — недостаточно яркие цвета в консоли..
Пример того, о чем я говорю:
Синицй цвет директорий
С серым цветом все ок, но вот с синим цветом директорий беда, читать не комфортно. А раз некомфортно, надо поменять. Делается это так:
- открываем в редакторе ваш .bashrc
Как видите ничего сложного и теперь директории стали желтого цвета, на мой взгляд намного читаемее чем синий:
Желтый цвет директорий
Ок, а что если мы хотим перекрасить и цвет файлов, не проблема, меняем нашу строку так:
После чего применяем стили:
И получаем оранжевый цвет файлов:
Желто оранжевые цвета в консоле
Однако, на вкус и цвет товарищей нет, поэтому давайте немного разберемся в формате раскраски.
Обратите внимание вот на эту часть «di=1;93:fi=33:«, для начала следует уяснить, что в качестве разделителя используется двоеточие, а не точка с запятой. Отсюда следует что тут у нас есть два набора цветов:
Теперь начнем по порядку, первым значением (в примере это di и fi) идет тип файла. Доступные значения могут быть такими:
Разноцветные терминалы
В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле
/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).
Для начала рассмотрим простой вариант, мой любимый формат командной строки.
Результат будет вот такой:
Это обычное использование переменной PS1, но если бы я не начал с этого — рассказ был бы неполным. Обычно в переменной PS1 с помощью специальных последовательностей символов определяют формат приглашения для ввода команд. Подробный список этих последовательностей можно почитать в документации к bash, в данном примере:
- \t — вывод «текущего времени», на самом деле это получается время завершения выполнения предыдущей команды, удобно когда перед глазами.
- j\j — выводит символ j и после него количество запущенных job, т.е. процессов в фоне. Это тоже удобно иметь перед глазами чтобы случаем про них не забыть когда соберешься закрыть терминал.
- \u@\h — имя пользователя и название сервера. Если работаете с несколькими серверами через удаленные терминалы — чтобы не путаться.
- \w — после двоеточия — рабочая директория.
- \n — поскольку строка получилась хоть и информативной (что-то вроде статус бара), но длинной, то приглашаем вводить команды с новой строки, а эта верхняя строка будет наглядно отделять от результата работы предыдущей команды.
- \$ — на новой строке будет выводится символ либо $ для обычного пользователя либо # для root’а и отделив его пробелом можно приглашать вводить новую команду.
Казалось бы, чего еще желать… Но дальше будет интереснее. Дело в том, что с помощью специальных управляющих символов можно задавать цвет выводимого текста, цвет курсора и даже переопределять title bar у таких графических терминалов, как Gnome2. И, на мой взгляд, довольно удобно когда цветом отделяются терминалы запущенные на различных серверах. Для меня каждый сервер ассоциируется с каким-то цветом и в этот цвет мы будем красить командную строку и курсор на каждом сервере.
У меня .bashrc разделен на два файла, в самом .bashrc содержится общий код для всех серверов, а в .bash_local — уникальные для этого сервера настройки командной строки. .bash_local я буду вставлять в .bashrc специальной директивой. Начнем с .bash_local. В контексте данной статьи там у меня будут две строчки, которые определяют цвет этого сервера:
Просто заношу коды цвета в переменные. Но, как вы заметили, что способ задания цвета для курсора и для текста командной строки — разный. Почему-то так исторический получилось. Чтобы понять, какой цвет каким кодом кодируется, есть подходящая картинка.
Посредине — обозначение цвета для цвета курсора, снизу — обозначение цвета для текста. Как вы можете увидеть, что я для текста и курсора использую цвет морской волны. Т.к. название сервера petrel («буревестник»), то он ассоциируется у меня с этим цветом.
Теперь .bashrc, тоже показываю его не полностью, а только то что имеет отношение к теме:
Тут я вставляю код из .bash_local в общий файл. Таким образом определяться ранее описанные переменные с цветом сервера.
Еще две переменные определяю с чисто красным цветом, он будет использоваться для маркировки терминалов привелигированного пользователя (root’а).
Тут проверяется какой используется терминал. Для любого неизвестного или неподдерживающего цвета будет использоваться приглашение без цвета (PS1=’\t j\j \u@\h:\w\n\$ ‘) так, как я это описал в начале статьи. Но если имя терминала начинается на xterm или rxvt, например, так себя позиционирует терминал Gnome, начинаем кудесить с цветом. Первая строчка — задаем цвет текста — цвет сервера и выводим первую строку приглашения ввода команд. Она всегда будет окрашена в цвет сервера. Вторая строчка — проверяем, работаем ли мы под непривелигированным или привелигированным пользователем (root’ом). Если root — то переопределяем цвета на красный. Третья строчка — формируем вторую строчку приглашения и определяем цвет курсора в терминале. Т.е. там у нас получится либо $ и через пробел курсор, оба покрашенные в цвет сервера, если пользователь обычный. Либо красный # и через пробел красный курсор, если это root.
А это, если честно, один в один скопированно из первоначального .bashrc от Дебиана. Знаю, что этот код видоизменяет title bar у окна, размещает там информацию об пользователе, сервере и домашней директории. Но поскольку этот код придумал не я, комментировать его не буду.
В результате у нас должно получится так, как на картинке в самом начале публикации.