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

185

Приглашение ко вводу команд в 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):

Цвет Числовое обозначение
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 — моргание.

Примеры

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

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 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения.

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

Обозначение Описание
\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.
\\ Символ обратной косой черты \.
\[ Начало последовательности непечатаемых символов.
\] Конец последовательности.