Строка приглашения в 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 |
\h | hostname до первой точки |
\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 для фона |
---|---|---|
Чёрный | 30 | 40 |
Красный | 31 | 41 |
Зелёный | 32 | 42 |
Жёлтый | 33 | 43 |
Синий | 34 | 44 |
Фиолетовый | 35 | 45 |
Голубой | 36 | 46 |
Белый | 37 | 47 |
Пример использования
\[\е[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\]'
С пояснениями (переключение цвета показано окраской последовательности):
Возможно выглядит это не особо эстетично, но главное — заметно. Что меня полностью и устраивает =)