Приглашение ко вводу команд в bash — это строка, которая отображается слева от каждой команды, которую вы вводите в терминале. Обычно приглашение имеет вид пользователь@hostname:директория$
Приглашение можно настраивать. Можно добавлять информацию или, например, изменить цвет приглашения.
В какой переменной задается приглашение
Формат строки приглашения задается в переменной окружения PS1. Чтобы настроить приглашение, необходимо изменить значение переменной PS1.
Например, переменная PS1 может иметь значение:
PS1="\u@\h:\w$"
Или, например, командой echo $PS1 можно вывести текущее значение переменной PS1. У меня в Ubuntu оно выглядит так:
echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$
Не пугайтесь. На самом деле существует масса возможностей для настройки строки приглашения. Ниже мы рассмотрим базовые методы настройки.
Как изменить приглашение (только для данной сессии)
Можно установить переменную PS1 только для текущей сессии в терминале. Это удобно, пока вы подбираете, как будет выглядеть строка приглашения. Чтобы это сделать нужно выполнить команду export для переменной PS1, например:
export PS1="\u@\w:"
После выполнения команды строка приглашения в терминале сразу изменится.
Настройка приглашения
Для задания различных значений переменной PS1 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения.
Специальные символы начинаются с символа косой черты «\», за которой следует буква или символ. Ниже приведена таблица специальных символов.
Обозначение | Описание |
---|---|
\a | ASCII-символ bell (07) |
\d | Дата в формате «День недели Месяц Дата» (например, «Пн Ноя 26») |
\D{format} | Значение format передается функции strftime. В строку приглашения подставляется результат выполнения функции. Фигурные скобки обязательны. |
\e | ASCII-символ escape (033) |
\h | Hostname (имя хоста) до первого символа точка «.». |
\H | Hostname (имя хоста, компьютера). |
\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. |
\\ | Символ обратной косой черты «\». |
\[ | Начало последовательности непечатаемых символов. |
\] | Конец последовательности. |
Примеры
Пример 1
Приглашение, состоящее из одного символа «>»:
PS1=">"
Пример 2
Текущее время, пользователь, текущая директория:
PS1="\A \u@\w$"
Пример 3
Дата, пользователь, текущая директория, номер команды:
PS1="\d:\u:\w\!>"
Как изменить цвета в строке приглашения
Элементы строки приглашения можно раскрашивать в разные цвета.
Чтобы задавать цвета для элементов строки приглашения нужно части строки приглашения заключать в специальные символы.
Используется следующий синтаксис:
\e[X;YmРАСКРАШИВАЕМАЯ_СТРОКА\e[m
\e[ - начало цветовой схемы.
X;Ym — цветовая пара (X;Y). Именно значения X и Y определяют цвет.
\e[m — окончание цветовой схемы.
Небольшой пример, чтобы вы понимали о чем идет речь. Раскрасим всю строку целиком цветом с обозначением 0;36.
export PS1="\e[0;36m\u@\h \W$ \e[m"
Цвета задаются числами. Можно задавать парой X;Y или просто Y. Например, красный это — 0;31 или просто 31. Есть и другие способы задания цветов, но в данной статье мы их не рассматриваем.
Список цифровых обозначений для цветов (Y):
Цвет | Числовое обозначение |
---|---|
Black | 30 |
Red | 31 |
Green | 32 |
Brown | 33 |
Blue | 34 |
Purple | 35 |
Cyan | 36 |
Light gray | 37 |
Dark gray | 90 |
Light red | 91 |
Light green | 92 |
Light yellow | 93 |
Light blue | 94 |
Light magenta | 95 |
Light cyan | 96 |
White | 97 |
При задании цвета двумя числами X;Y, первое число X принимает следующие значения:
0 — обычный цвет;
1 — будет использоваться более яркий цвет;
2 — более темный цвет;
3 — курсив;
4 — подчеркивание;
5 — моргание.
Примеры
Пример 1
Например, установим имя пользователя желтым цветом, а остальной текст оставим стандартным цветом (в моем случае это белый). Для указания желтого цвета используем обозначение 1;33 (как светло-коричневый).
export PS1="\e[1:33m\u\e[m@\h \W$ "
Пример 2
Раскрасим остальные элементы строки приглашения:
export PS1="\e[1;33m\u\e[m@\e[0;96m\h\e[m \e[0;92m\W\e[m$ "
Как изменить приглашение на постоянной основе
Новое значение переменной PS1 прописывается в файле .bashrc, который расположен в вашей домашней директории (файл может отсутствовать).
Откроем файл .bashrc в редакторе nano для редактирования. Для этого в терминале выполним команду:
nano ~/.bashrc
Перейдем в конец файла и добавим новую строку, в которой пропишем значение переменной PS1. Например:
PS1="\u@\w$"
Сохраним изменения и закроем файл. Для этого нажмите Ctrl+X, затем Y и Enter, чтобы сохранить изменения.
Теперь выполним команду source, чтобы наши изменения вступили в силу:
source ~/.bashrc
Перезапустите терминал. Приглашение для ввода команд будет обновлено.
Комментарии
00:41
http://nanolx.org/nanolx/bashstyle-ng
Самое то тем кому как мне жутко лениво ковыряться с конфигами )))
09:53
01:15
20:41
12:17
22:32
PS1="\e[0;92m▶:\w$ \e[m"
11:54
23:58
23:26
15:37
15:26
18:29
18:41
https://pingvinus.ru/gallery/4674
за "пестроту" как раз в меня тапками кидают!..
Но я тоже за гармонию!
Так что как мог так и раскрасил свою сборку MX Linux!...
21:46
если использовать
\e[
то ломается перенос строки
необходимо использовать
\[\e[
19:24
23:47
00:33
Т.е. твоя строка должна выглядеть так: export PS1="\[\e[0;36m\]\u@\h \W$ \[\e[m\]"
10:20
Дата и время: зелёный (32), знак @: белый (97), имя хоста: синий (34), двоеточие и путь: белый (97), знак $: циан (36).
Только сейчас узнал, что можно (оказывается!) настраивать приглашение к вводу по своим предпочтениям.
Оно, может, и не так уж необходимо, но занятно.