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

Автор: | 12/08/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] '