Формат строки выводимой в командной строке определяется значением переменной PS1. Давайте посмотрим что в ней храниться.
echo $PS1
Вы увидите некоторую последовательность символов. Что обозначает каждый из символов, вы можете найти в таблицах ниже.
| Последовательность | Значение |
|---|---|
| \a | Заставляет компьютер издать звук |
| \d | Текущая дата в формате «День недели, месяц, число» |
| \h | Имя хоста локальной машины минус имя домена |
| \H | Полное имя хоста |
| \j | Число заданий действующее в текущем сеансе |
| \l | Имя текущего устройства терминала |
| \n | Символ перевода строки |
| \r | Возврат каретки |
| \s | Имя программы командной оболочки |
| \t | Текущее время в 24-часовом формате |
| \T | Текущее имя в 12-часовом формате |
| \@ | Текущее имя в 12-часовом формате AM/PM |
| \A | Текущее время в 24-часовом формате часы:минуты |
| \r | Имя пользователя |
| \v | Номер версии командной оболочки |
| \V | Номер версии и выпуска командной оболочки |
| \w | Имя текущего рабочего каталога |
| \W | Последняя часть имени текущего рабочего каталога |
| \! | Номер текущей команды в истории |
| \# | Число команд, введённых в текущем сеансе командной оболочки |
| \$ | Выводит символ $ если пользователь не является суперпользователем, иначе выводит # |
| \[ | Отмечает начало последовательности из одного или нескольких непечатаемых символов. Используется для внедрения непечатаемых символов, управляющих поведением терминала, например, перемещает курсор или изменяет цвет текста. |
| \] | Отмечает конец последовательности непечатаемых символов. |
Прежде чем менять исходное оформление строки приветствия. Сохраните оригинальный шаблон.
ps_old="$PS1"
Чтобы убедтьбся, что формат строки скопирован, распечатйте значение переменной ps_old.
echo $ps_old
Если потребуется восстановить прежнее значение, просто введите команду
PS1="$ps_old"
Экранированные последовательности для опрелеления цвета
| последовательность | Цвет |
|---|---|
| \033[0;30m | Чёрный |
| \033[0;31m | Красный |
| \033[0;32m | Зелёный |
| \033[0;33m | Коричневый |
| \033[0;34m | Синий |
| \033[0;35m | Пурпурный |
| \033[0;36m | Бирюзовый |
| \033[0;37m | Светло-серый |
| \033[1;30m | Тёмно-серый |
| \033[1;31m | Светло-красный |
| \033[1;32m | Светло-зелёный |
| \033[1;33m | Жёлтый |
| \033[1;34m | Светло-синий |
| \033[1;35m | Светло-пурпурный |
| \033[1;36m | Светло-бирюзовый |
| \033[1;37m | Белый |
Определения цвета фона
| Последовательность | Цвет |
|---|---|
| \033[0;40m | Чёрный |
| \033[0;41m | Красный |
| \033[0;42m | Зелёный |
| \033[0;43m | Коричневый |
| \033[0;44m | Синий |
| \033[0;45m | Пурпурный |
| \033[0;46m | Бирюзовый |
| \033[0;47m | Светло-серый |
| \033[0m | Сбрасывает настройки цвета фона и текста |
Управление позицией каретки
| Последовательность | Действие |
|---|---|
| \033[n;mH | Перемещает курсор в строку n и позицию m |
| \033[nA | Перемещаетк курсор вверх на n строк |
| \033[nB | Перемещает курсор вниз на n строк |
| \033[nC | Перемещает курсор вправо на n символов |
| \033[nD | Перемещает курсор влево на n символов |
| \033[2] | Очищает экран и перемещает курсор в позицию 0 ; 0 |
| \033[K | Очищает от каретки, до конца строки |
| \033[s | Сохраняет текущую позицию каретки |
| \033[u | Восстанавливает сохранённую позицию курсора |
На википедии есть огромная статья о ANSI escape code
Ниже приведена последовательность закрашивающая самую верхнюю строку красным цветом и печатающая время в этой строке.
"\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]"
Чтобы сохранить изменения на постоянной основе, откройте файл .bashrc и добавьте в него строки определявющую значение переменной PS1 и экспортирующую это значение.
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]"
export PS1
Но для того чтобы изменить цвет строки призыва ввода, можно использовать следующий формат.
PS1="\[\033[1;36m\]\u@\h \W\$ \[\033[0\]"
export PS1
В каждом примере обязательным синтаксисом является заключения некоторых последовательностей в \[ шаблон \] .
В квадратные скобки заключаются последовательности непечатаемых символов. Это позволяет bash правильно вычислить длину строки приглашения. Без этого позиционирование каретки на экране могло бы выполняться неправильно. Попробуйте убрать все \[\] и поработать какое-то время, вы сам всё увидите.
