Строка приглашения в bash — то, что печатается в терминал до начала ввода команды. К примеру, по умолчанию у меня это выглядит как-то так:
Приглашение bash по умолчанию

Как видно, достаточно неприметный вид, ничем не выделяется. А значит сложный поиск введённых команд среди вывода bash. Рецепт в статье универсальный, будут работать как для Ubuntu 16.04, так и в Archlinux.

Формат задаётся с помощью глобальной переменной PS1, узнать её значение можно с помощью echo:
$ echo $PS1

Изменить её можно следующим образом (пока консоль не закроется):
$ PS1='значение'

Либо добавив запись вида:
export PS1='значение'
В файлы ~/.bashrc и ~/.bash_profile — для определённого пользователя или же /etc/bashrc и /etc/bash_profile — для всех по умолчанию.

Формат строки приглашения в bash

В переменную PS1 можно записать обычные символы, но они не представляют собой какого-то практического интереса, служат скорее для декорации. В то же время существуют и специальные символы, выполняющие какую-то функцию.

Последовательность символов, отображающих время и дату

СимволыЗначение
\dДата в формате: день недели, текущий месяц, число
\tВремя в 24-часовом формате: часы, минуты, секунды
\TВремя в 12-часовом формате: часы, минуты, секунды
\@Время в 12-часовом формате: часы, минуты, секунды + AM(утро) или PM(вечер)

Специальные символы, изменяющие значение в зависимости от пользователя и хоста

СимволыЗначение
\HПолный hostname
\hhostname до первой точки
\uТекущий пользователь
\$Показывает $ — если оболочка запущена непривилегированным пользователем и # — root’ом
\sНазвание оболочки терминала

Местоположение

СимволыЗначение
\WПолный путь папки в которой происходит сеанс
\wСокращенный путь (отображается только имя текущей директории)

Прочее

СимволыЗначение
\nНовая строка
\#Номер команды
\!Номер команды в истории bash’а
\aЗвуковой сигнал

Пример использования

Задав приглашение в виде ‘имя_хоста : время : номер команды -:’
PS1='\H : \t : \# -:'
Увидим примерно это:
ozi-linux : 08:55:35 : 8 -:

Изменение цвета символов

Цвет букв или фона меняется с помощью такой последовательности:
\[\е[K;Nm\]Где K — номер свойства, N — номер цвета букв или фона, в зависимости от значения.

Свойства цвета и их численное обозначение

СвойствоK
По-умолчанию0
Яркий1
Тусклый2
Подчеркнутый4
Обычный5
Инвентированный7
Скрытый8

Цвет

ЦветN для символовN для фона
Чёрный3040
Красный3141
Зелёный3242
Жёлтый3343
Синий3444
Фиолетовый3545
Голубой3646
Белый3747

Пример использования

\[\е[1;47m\]\[\е[2;35m\]
Эта последовательность задаёт яркий(1) белый фон(47) и тусклые(2) фиолетовые символы(35) для последующего вывода.

Заключение

Немного подумав, я выбрал такой формат:
PS1='\[\e[1;31m\]\u\[\e[0;32m\]:\[\e[0;35m\]\w\[\e[0;32m\]\$ \[\e[0;37m\]'
С пояснениями (переключение цвета показано окраской последовательности):
Bash пример PS1

А выглядит это вот так:
Строка приглашения bash

Возможно выглядит это не особо эстетично, но главное — заметно. Что меня полностью и устраивает =)

Навигация по записям