Настройка строки приглашения ввода. Prompt Srting Linux.

Опубликовано

Формат строки выводимой в командной строке определяется значением переменной 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 правильно вычислить длину строки приглашения. Без этого позиционирование каретки на экране могло бы выполняться неправильно. Попробуйте убрать все \[\] и поработать какое-то время, вы сам всё увидите.

Добавить комментарий

Ваш адрес email не будет опубликован.