Настройка вида приглашения командной строки в Bash

Приглашение ко вводу команд в bash — это строка, которая отображается слева от каждой команды, которую вы вводите в терминале. Обычно приглашение имеет вид пользователь@hostname:директория$

Вид приглашения командной строки Bash определяется переменной PS1. Его можно просмотреть как любую другую переменную окружения:

echo $PS1

Как изменить приглашение (только для данной сессии)

Можно установить переменную PS1 только для текущей сессии в терминале. Это удобно, пока вы подбираете, как будет выглядеть строка приглашения. Чтобы это сделать нужно выполнить команду export для переменной PS1, например:

export PS1="u@w:"

После выполнения команды строка приглашения в терминале сразу изменится.

Как изменить приглашение на постоянной основе

Новое значение переменной PS1 прописывается в файле .bashrc, который расположен в вашей домашней директории (файл может отсутствовать).

Откроем файл .bashrc в редакторе nano для редактирования. Для этого в терминале выполним команду:

nano ~/.bashrc

Перейдем в конец файла и добавим новую строку, в которой пропишем значение переменной PS1. Например:

PS1="u@w$"

Сохраним изменения и закроем файл. Для этого нажмите Ctrl+X, затем Y и Enter, чтобы сохранить изменения.

Теперь выполним команду source, чтобы наши изменения вступили в силу:

source ~/.bashrc

Перезапустите терминал. Приглашение для ввода команд будет обновлено.

Как изменить цвета в строке приглашения

Элементы строки приглашения можно раскрашивать в разные цвета.

Чтобы задавать цвета для элементов строки приглашения нужно части строки приглашения заключать в специальные символы.

Используется следующий синтаксис:

e[X;YmРАСКРАШИВАЕМАЯ_СТРОКАe[m

e[ - начало цветовой схемы. X;Ym — цветовая пара (X;Y). Именно значения X и Y определяют цвет. e[m — окончание цветовой схемы.

Небольшой пример, чтобы вы понимали о чем идет речь. Раскрасим всю строку целиком цветом с обозначением 0;36.

export PS1="e[0;36mu@h W$ e[m"

Цвета задаются числами. Можно задавать парой X;Y или просто Y. Например, красный это — 0;31 или просто 31. Есть и другие способы задания цветов, но в данной статье мы их не рассматриваем.

Список цифровых обозначений для цветов (Y):

ЦветЧисловое обозначение
Black30
Red31
Green32
Brown33
Blue34
Purple35
Cyan36
Light gray37
Dark gray90
Light red91
Light green92
Light yellow93
Light blue94
Light magenta95
Light cyan96
White97

При задании цвета двумя числами X;Y, первое число X принимает следующие значения:

0 — обычный цвет;
1 — будет использоваться более яркий цвет;
2 — более темный цвет;
3 — курсив;
4 — подчеркивание;
5 — моргание.

Примеры

Простой вывод текущего пользователя и полного пути:

PS1="\u@\h:\w\$ "

Такойже вывод, но с подстветкой:

PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Список возможных настроек приглашения

Для задания различных значений переменной PS1 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения.

Специальные символы начинаются с символа косой черты \, за которой следует буква или символ. Ниже приведена таблица специальных символов

ОбозначениеОписание
\aASCII-символ bell (07)
\dДата в формате «День недели Месяц Дата» (например, «Пн Ноя 26»)
\D{format}Значение format передается функции strftime.
В строку приглашения подставляется результат выполнения функции. Фигурные скобки обязательны.
\eASCII-символ escape (033)
\hHostname (имя хоста) до первого символа точка ..
\HHostname (имя хоста, компьютера).
\jКоличество фоновых процессов, запущенных в данной оболочке
\lБазовое название оболочки.
\nПереход на новую строку.
\rПереход к началу строки (возврат каретки).
\sИмя оболочки (имя shell).
\tТекущее время в 24-часовом формате (HH:MM:SS).
\TТекущее время в 12-часовом формате (HH:MM:SS).
\@Текущее время в 12-часовом am/pm формате.
\AТекущее время в 24-часовом формате (HH:MM).
\uИмя пользователя.
\vВерсия bash (например, 4.4).
\VВерсия bash с версией релиза (например, 4.4.19).
\wТекущий абсолютный путь (полный путь). Домашняя директория сокращается до значка тильды ~.
\WТекущий относительный путь. Домашняя директория сокращается до значка тильды ~.
\!Номер команды в истории команд (history).
\#Номер команды в текущей сессии терминала.
\$Символ приглашения (# для root, $ для обычных пользователей).
\nnnСимвол, соответствующий восьмеричному значению nnn.
\\Символ обратной косой черты \.
\[Начало последовательности непечатаемых символов.
\]Конец последовательности.