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

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

2

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

Bash Promt PS1

Приглашение можно настраивать. Можно добавлять информацию или, например, изменить цвет приглашения.

В какой переменной задается приглашение

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

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

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

Примеры

Пример 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):

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

Примеры

Пример 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

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

Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы стайвить лайки
2

Комментарии

pondogor
27.11.2018, 00:41
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: +1
войдите, чтобы стайвить лайки
Для этих и многих других целей есть дюже приятная графическая утилита BashStyle-NG:
http://nanolx.org/nanolx/bashstyle-ng
Самое то тем кому как мне жутко лениво ковыряться с конфигами )))
yuriyАктивный
27.11.2018, 09:53
Постоянная ссылка на комментарийРодительский комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы стайвить лайки
Интересная утилита! Попробую!

Написать комментарий

Ваше имя:
Текст комментария: