Настройка приглашения командной строки в Bash. Linux статьи
Написать статью
Войдите, чтобы писать статьи

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

18

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

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

Лайков: +12
войдите, чтобы ставить лайки
18
  • Опубликовано: 27.11.2018

Комментарии

pondogor
Активный пользователь
Активный
27.11.2018
00:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+3
войдите, чтобы ставить лайки
Для этих и многих других целей есть дюже приятная графическая утилита BashStyle-NG:
http://nanolx.org/nanolx/bashstyle-ng
Самое то тем кому как мне жутко лениво ковыряться с конфигами )))
yuriy
Активный пользователь
Активный
27.11.2018
09:53
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийpondogorРодительский комментарий
+1
войдите, чтобы ставить лайки
Интересная утилита! Попробую!
Anonymous
31.01.2019
01:15
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Наконец-то! Нашёл понятный мануал. Спасибо. Теперь когда скроллю терминал, свои команды замечаю, к тому же ещё и время выполнения команды добавил!
qooboid
12.01.2020
20:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Благодарность автору за доходчивое чтиво.
гость
20.04.2020
12:17
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Доходчиво. Спасибо.
MR H8
21.05.2020
22:32
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Спасибо ваша статья помогло мне изменить вид командной строки
PS1="\e[0;92m▶:\w$ \e[m"
ArboLeet
Активный пользователь
Активный
11.09.2021
11:54
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMR H8Родительский комментарий
0
войдите, чтобы ставить лайки
минималистичненько :)
ArboLeet
Активный пользователь
Активный
11.09.2021
23:58
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Мой PS1='[ \e[92m\u\e[m@\e[92m\H\e[m ]\e[94m\w\e[m>'
Sm0ke
01.12.2021
23:26
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Огромное спасибо, больше глаза не ломаю)))
UF4N
30.08.2022
15:37
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Не мог вкурить почему в терминале графической сессии командный стимул меняется после редактирования ~/.profile и даже /etc/profile , а в виртуальной консоли всё чики-пики. Оказывается во всём виноват .bashrc
[аноним]
25.02.2023
15:26
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
а почему 93 - это светло-жёлтый, а 33 - не жёлтый, а коричневый?
choice
Активный пользователь
Активный
25.02.2023
18:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
В некоторых дистрибутивах создатели меняют цветовую палитру, и тогда за привычными числами стоят непривычные цвета. Например, в Calculate мягкая пастельная цветовая гамма, 30 - не привычный чёрный, а оттенок серого, 34 тоже не синий, а голубой, т.е. всё не контрастное, а как выцветшее. Наверно такой подход призван меньше утомлять глаза при долгом использовании. Другой пример - EndeavourOS, там преобладают сиренево-фиолетовые оттенки. Но там многие приложения настроены "в тему" и заметно стремление к единству и гармонии. Когда придерживаются одной выбранной гаммы, то результат, обычно, воспринимается хорошо, пусть даже сначала смотрится непривычно. В MX Linux много сиреневых и синих тонов, но, на мой взгляд, единства гораздо меньше, встречается пестрота.
x230
Активный пользователь
Активный
25.02.2023
18:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
0
войдите, чтобы ставить лайки
Тут
https://pingvinus.ru/gallery/4674
за "пестроту" как раз в меня тапками кидают!..
Но я тоже за гармонию!
Так что как мог так и раскрасил свою сборку MX Linux!...
Саша
28.12.2023
21:46
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
У меня
если использовать
\e[
то ломается перенос строки
необходимо использовать
\[\e[
Ильгиз
14.01.2024
19:24
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Что-то здесь не верно. Ввожу export PS1="\e[0;36m\u@\h \W$ \e[m" далее Enter вроде цвет меняется, но если стрелкой вверх начинаешь перебирать историю команд и нажимаешь BackSpace, то в строке остается "export PS1" и потом к нему добавляются команды из истории, путаница получается. Может кто знает рабочую команду чтобы выводилось приглашение зеленого цвета тильда и двоеточие (моя не рабочая export PS1="\e[92m\w: \e[m") ~:
NickVG
27.08.2024
23:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийИльгизРодительский комментарий
0
войдите, чтобы ставить лайки
У меня так PS1='\[\e[01;32m\][\w]\[\e[00m\]\$ '
rvm
11.09.2024
00:33
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийИльгизРодительский комментарий
0
войдите, чтобы ставить лайки
Что бы такого не было, нужно непечатные символы "обернуть" в \[ \]. Это поможет Bash правильно учитывать непечатаемые символы при вычислении длины приглашения.
Т.е. твоя строка должна выглядеть так: export PS1="\[\e[0;36m\]\u@\h \W$ \[\e[m\]"
LexD
Активный пользователь
Активный
02.09.2024
10:20
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
PS1="\e[1;32m\D{%Y-%m-%d} \t\e[m \e[0;97m@\e[m \e[1;34m\H\e[m\e[0;97m:\w\e[m\e[1;36m$\e[m "

Дата и время: зелёный (32), знак @: белый (97), имя хоста: синий (34), двоеточие и путь: белый (97), знак $: циан (36).

Только сейчас узнал, что можно (оказывается!) настраивать приглашение к вводу по своим предпочтениям.
Оно, может, и не так уж необходимо, но занятно.

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

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила