В большинстве дистрибутивов Linux приглашение Bash выглядит примерно так: username @ hostname: directory $
. Но вы можете настроить приглашение Bash так, чтобы оно содержало все, что вам нравится, и даже выбирать любые цвета, которые вам нравятся.
Примеры шагов здесь были выполнены на Ubuntu 16.04 LTS. Процесс должен быть таким же в других дистрибутивах Linux, хотя приглашение Bash по умолчанию и параметры в файле .bashrc могут немного отличаться.
Где хранится переменная подсказка
Конфигурация приглашения Bash хранится в файле .bashrc вашей учетной записи, который находится по адресу ~/.bashrc
. Итак, если ваше имя пользователя – bob, файл находится в /home/bob/.bashrc
.
Вы можете открыть файл для просмотра текущей переменной Bash. В качестве примера текстового редактора мы будем использовать nano, хотя вы также можете использовать vi, emacs или любой другой текстовый редактор, с которым вам удобно. Откройте терминал и запустите:
nano ~/.bashrc
Прокрутите вниз до раздела PS1 =
. Первая переменная выглядит довольно сложной, потому что она включает информацию о цвете – мы объясним это позже. Вторая переменная без информации о цвете выглядит следующим образом:
<До> $ {debian_chroot: + ($ debian_chroot)} \ и @ \ ч: \ ш \ $
Это все еще немного сложно из-за битов $ {debian_chroot: + ($ debian_chroot)}
. Они просто сообщают Bash, чтобы вы знали, используете ли вы среду chroot Debian и обычно ее не показывают. Игнорируя их, вот структура по умолчанию переменной приглашения Bash:
<До> \ и @ \ ч: \ ш \ $
\ u
обозначает ваше имя пользователя, @
обозначает знак @, \ h
обозначает имя хоста (имя компьютера), :
обозначает символ:, \ w
обозначает рабочий каталог, а \ $
обозначает $, если вы являетесь обычной учетной записью пользователя, или #, если вы являетесь пользователем root. Итак, собрав все это вместе, вы получите username @ hostname: working_directory $
.
Чтобы изменить приглашение Bash, вам просто нужно добавить, удалить или переставить специальные символы в переменной PS1. Но есть гораздо больше переменных, которые вы можете использовать, чем стандартные.
Оставьте текстовый редактор на данный момент – в nano нажмите Ctrl + X для выхода. Мы покажем вам, как поэкспериментировать с переменными перед тем, как записать новую в ваш файл .bashrc.
Как создать собственную подсказку Bash
Ваша конфигурация приглашения Bash хранится в переменной PS1. Чтобы сохранить содержимое переменной PS1 в новую переменную, выполните следующую команду:
DEFAULT = $ PS1
Теперь вы можете установить для переменной PS1 разные значения для экспериментов. Например, в первой строке здесь будет указана основная подсказка «user $», а во второй будет указана основная подсказка «user: working_directory $».
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Если вы когда-нибудь захотите вернуться к приглашению по умолчанию, просто выполните следующую команду.
PS1 = $ DEFAULT
Bash будет восстановлен в запросе по умолчанию благодаря тому, что вы сохранили эти настройки по умолчанию ранее. Обратите внимание, что любые изменения, которые вы вносите здесь, являются временными только для текущего сеанса Bash, поэтому вы всегда можете выйти из системы, войти в систему или закрыть ее, а затем снова открыть окно терминала, чтобы вернуться к приглашению по умолчанию. Но приведенная выше строка позволяет легко вернуться к приглашению Bash по умолчанию без необходимости выхода из системы или закрытия окна.
Вы можете добавить любые символы или текст в переменную. Таким образом, чтобы добавить префикс по умолчанию к «Hello World», вы можете использовать:
PS1 = "Hello World \ u @ \ h: \ w \ $"
Теперь, когда вы освоили основы, вам просто нужно знать, что это за специальные символы. Вы, вероятно, не будете заботиться о многих из них, но вот полный список, который показан в руководстве по Bash:
-
Символ звонка:
\ a
-
Дата в формате «День недели, месяц, месяц» (например, «Вторник 26 мая»):
\ d
-
Формат передается в strftime (3), а результат вставляется в строку приглашения; пустой формат приводит к представлению времени, зависящему от локали. Требуются скобки:
\ D {format}
-
Экранирующий символ:
\ e
-
Имя хоста, до первого ‘.’:
\ h
-
Имя хоста:
\ H
-
Количество заданий, в настоящее время управляемых оболочкой:
\ j
-
Базовое имя терминального устройства оболочки:
\ l
-
Новая строка:
\ n
-
Возврат каретки:
\ r
-
Имя оболочки, базовое имя $ 0 (часть после последней косой черты):
\ s
-
Время в 24-часовом формате ЧЧ: ММ: СС:
\ t
-
Время в 12-часовом формате ЧЧ: ММ: СС:
\ T
-
Время в формате 12 часов утра/вечера:
\ @
-
Время в 24-часовом формате ЧЧ: ММ:
\ A
-
Имя пользователя текущего пользователя:
\ u
-
Версия Bash (например, 2,00):
\ v
-
Выпуск Bash, версия + уровень исправления (например, 2.00.0):
\ V
-
Текущий рабочий каталог с $ HOME, сокращенным до тильды (использует переменную $ PROMPT_DIRTRIM):
\ w
-
Базовое имя $ PWD с $ HOME, сокращенно обозначенным тильдой:
\ W
-
Исторический номер этой команды:
\!
-
Номер команды этой команды:
\ #
-
Если эффективный идентификатор равен 0, #, в противном случае $:
\ $
-
Символ, чей ASCII-код является восьмеричным значением nnn:
\ nnn
-
Обратная косая черта:
\\
-
Начните последовательность непечатных символов. Это можно использовать для встраивания последовательности управления терминалом в приглашение:
\ [
-
Завершить последовательность непечатаемых символов:
\]
Итак, если вы хотите добавить дату и время в приглашение Bash и поместить команду рабочего каталога во вторую строку, вы можете использовать следующую конструкцию:
PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"
Квадратные скобки здесь совсем не нужны, но помогают визуально разбить изображение на части и облегчают чтение строки. Как мы уже упоминали ранее, вы можете добавить любой текст или обычные символы в переменную, которая вам нравится, поэтому не стесняйтесь использовать все, что вам подходит.
Есть еще один мощный прием, о котором вы должны знать: вы можете добавить вывод любой команды в приглашение. Всякий раз, когда появляется приглашение, Bash запускает команду и вводит текущую информацию. Для этого просто включите любую команду, которую вы хотите выполнить, между двумя символами `
. Это не апостроф, а серьезный акцент, который появляется над клавишей Tab на клавиатуре.
Например, допустим, вы хотите просмотреть версию ядра Linux в командной строке. Вы можете использовать строку, подобную следующей:
PS1 = "\ u @ \ h в` uname -s -r` \ w \ $ "
В качестве другого примера, допустим, вы хотите просмотреть время работы системы и среднее значение загрузки, как показано командой uptime
. Вы можете использовать следующую конструкцию, которая помещает время автономной работы в собственную строку перед остальной частью приглашения.
PS1 = "(` uptime`) \ n \ u @ \ h: \ w $ "
Не стесняйтесь экспериментировать с различными специальными символами и командами, чтобы собрать идеальную командную строку.
Как добавить цвета в подсказку Bash
Как только вы определились со своим предпочтением, вы можете добавить к нему цвета. Это на самом деле очень просто, но делает переменную очень грязной и сложной, если вы не понимаете, на что вы смотрите.
Например, переменная подсказки цвета по умолчанию из ранее была:
$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ и @ \ ч \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ ш \ [\ 033 [00m \] \ $
Или, удалив биты debian_chroot еще раз:
\ [\ 033 [01; 32m \] \ и @ \ ч \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ ш \ [\ 033 [00m \] \ $
На самом деле это просто переменная \ u @ \ h: \ w $
из ранее, но с информацией о цвете. На самом деле, мы можем разбить его на несколько разделов:
\ [\ 033 [01; 32m \] \ и @ \ ч \ [\ 033 [00m \] : \ [\ 033 [01; 34m \] \ ш \ [\ 033 [00m \] \ $
Первый раздел – это бит \ u @ \ h
, которому предшествует информация о цвете, которая делает его зеленым. Вторым является символ :
, которому предшествует информация о цвете, которая удаляет любую окраску. Третьим является бит \ w
, которому предшествует информация о цвете, которая делает его синим. Четвертый – это бит \ $
, которому предшествует информация о цвете, которая удаляет любую окраску.
Как только вы поймете, как создавать собственные цветовые метки, вы можете добавить любые цвета, которые вам нравятся, в любые разделы вашего Bash, которые вам нравятся.
Вот что вам нужно знать: вы должны включить всю информацию о цветовых кодах между символами \ [
и \]
.Внутри тега вы должны начать с \ 033 [
или \ e [
, чтобы указать Bash, что это информация о цвете. И \ 033 [
, и \ e [
делают одно и то же. \ e [
короче, поэтому может быть более удобным для использования, но мы будем использовать \ 033 [
здесь, поскольку это соответствует тому, что используется по умолчанию. В конце тега вы должны заканчиваться m \
, чтобы указать конец цветового тега.
Разбивая это, вот как будет выглядеть каждая цветовая метка. Единственное отличие – это информация, которую вы добавляете вместо ЦВЕТА для определения фактического цвета:
\ [\ 033 [ COLOR м \]
Bash позволяет изменить цвет текста переднего плана, добавить к тексту такие атрибуты, как «полужирный» или «подчеркивание», и установить цвет фона.
Вот значения для текста переднего плана:
- Черный: 30
- Синий: 34
- Голубой: 36
- Зеленый: 32
- Фиолетовый: 35
- Красный: 31
- Белый: 37
- Желтый: 33
Например, поскольку фиолетовый текст имеет цветовой код 32, вы будете использовать \ [\ 033 [ 32 m \]
для фиолетового текста.
Вы также можете указать атрибут для текста. Этот атрибут должен быть добавлен перед номером цвета, разделенным точкой с запятой (;). Текст с этими атрибутами будет выглядеть по-разному в разных терминальных эмуляторах.
Вот значения для текстовых атрибутов:
- Нормальный текст: 0
- Жирный или светлый текст: 1 (зависит от эмулятора терминала.)
- Тусклый текст: 2
- Подчеркнутый текст: 4
- Мигающий текст: 5 (Это не работает в большинстве эмуляторов терминала.)
- Перевернутый текст: 7 (инвертирует цвета переднего плана и фона, поэтому вы увидите черный текст на белом фоне, если текущий текст – белый текст на черном фоне.)
- Скрытый текст: 8
Вам на самом деле не нужно включать обычный текстовый атрибут. Во всяком случае, это по умолчанию.
Например, поскольку красный текст – это код 31, а жирный текст – это код 1, вы будете использовать \ [\ 033 [ 1; 31 m \]
для жирного красного текста.
Вы также можете указать цвет фона, но вы не можете добавить атрибут к цвету фона.
Вот значения для цветов фона:
- Черный фон: 40
- Голубой фон: 44
- Голубой фон: 46
- Зеленый фон: 42
- Фиолетовый фон: 45
- Красный фон: 41
- Белый фон: 47
- Желтый фон: 43
Например, поскольку синий фон имеет код 44, \ [\ 033 [ 44 m \]
будет указывать синий фон.
Вы можете указать теги цвета переднего плана и фона. Например, 42 представляет зеленый фон, а 31 – красный текст. Итак, чтобы приглашение по умолчанию стало красным текстом на зеленом фоне, вы должны использовать:
PS1 = "\ [\ 033 [ 42 м \] \ [\ 033 [ 31 м \] \ u @ \ h: \ w \ $"
Здесь мы просто указываем один цвет фона, а затем один цвет текста переднего плана, который начинается в начале приглашения и применяется ко всему тексту в приглашении. Тем не менее, вы можете указать столько цветовых тегов, сколько вы хотите в переменной для окрашивания различных разделов вашего приглашения, как вам нравится.
Цвета фона и текста переднего плана продолжают проходить после приглашения, если вы не укажете код цвета 00, чтобы очистить информацию о цвете. Вы также можете использовать этот тег в переменной для сброса форматирования обратно по умолчанию где-то в вашем приглашении. Например, следующая строка заканчивает всю раскраску перед символом \ $
.
PS1 = "\ [\ 033 [ 42 т \] \ [\ 033 [ 31 т \] \ и @ \ ч: \ ш \\ [\ 033 [ 00 м \] \ $ "
Как установить новую подсказку по умолчанию
Когда вы закончите экспериментировать с цветами, у вас должна появиться подсказка Bash, которая вам нравится в текущем сеансе. Но вы, вероятно, хотите сделать этот новый запрос постоянным, чтобы он автоматически использовался во всех ваших сеансах Bash.
Для этого вам просто нужно изменить содержимое переменной PS1 в файле .bashrc, который мы рассматривали ранее.
Откройте файл .bashrc в предпочитаемом вами текстовом редакторе, например так:
nano ~/.bashrc
Прокрутите вниз и найдите раздел PS1 =. Просто замените переменную по умолчанию вашей настроенной переменной. Однако вы, вероятно, захотите оставить биты $ {debian_chroot: + ($ debian_chroot)}
в одиночку – они все равно не появятся, если вы не находитесь в среде chroot.
Введите вашу цветную переменную PS1 под if ["$ color_prompt" = yes]; тогда
строка. Введите переменную без цветов в строке else
.
Сохраните файл и закройте текстовый редактор. Например, чтобы сохранить файл в nano, нажмите Ctrl + O, нажмите Enter, а затем нажмите Ctrl + X для выхода.
В следующий раз, когда вы запустите новую оболочку Bash, например, войдя в систему в терминале или открыв новое окно терминала, вы увидите свое настраиваемое приглашение.