bash: меняем цвета и настраиваем консоль под себя

Автор: | 08/12/2011

Лично мне не нравится стандартное, бесцветное, приглашение bash в консоли:

Можно его немного поправить – добавить цвета и вывод дополнительной информации.

Редактируем (или создаем, если его нет) в домашней папке пользователя файл .bash_profile:

# ee /home/setevoy/.bash_profile

и в него записываем такое:

PS1=’t[[e[0;32m]u[e[m]|[e[1;34m]w[e[m]] [e[0;31m]$ [e[m][e[0;37m] ‘

В результате, консоль будет выглядеть так:

Для рута тоже можно внести изменения:

# ee /root/.bashrc

и добавим строку:

PS1=’t[[e[0;31m]u[e[m]|[e[1;34m]w[e[m] ] [e[0;31m]$ [e[m][e[0;37m] ‘

Получим такую картинку:

Разница только в цвете вывода имени пользователя – для 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 – тип шрифта

0 – простой текст

1жирный текст

4подчеркнутый текст

5 – мигающий текст

7 – инверсия, фон цвета текста.

Цвета шрифта:

30 черный
31 красный
32 зеленый
33 жёлтый/оранжевый
34 голубой
35 фиолетовый
36 цвета морской волны
37 светло-серый
39 по умолчанию

Что бы не устанавливать параметры “навсегда”, можно указать параметры только для текущей сессии. Для этого достаточно строку с параметрами задать не через файл .bashrc или .bash_profile, а просто указать в командной строке:

P.S. На самом деле, вывод h (имя хоста) бывает иногда очень полезным.

UPD 05 апр 2015: до сих пор пользуюсь почти той же схемой:

PS1='t [[e[0;32m]u[e[m]@e[0;37m]h[e[m] [e[1;34m]w[e[m]][e[0;31m] $[e[m][e[0;37m] '