Домашняя » как » Как настроить (и раскрасить) вашу подсказку Bash

    Как настроить (и раскрасить) вашу подсказку Bash

    В большинстве дистрибутивов Linux приглашение Bash выглядит примерно так: имя пользователя @ имя хоста: каталог $ . Но вы можете настроить приглашение Bash так, чтобы оно содержало все, что вам нравится, и даже выбирать любые цвета, которые вам нравятся..

    Примеры шагов здесь были выполнены на Ubuntu 16.04 LTS. Процесс должен быть таким же на других дистрибутивах Linux, хотя приглашение Bash по умолчанию и настройки в файле .bashrc могут немного отличаться.

    Где хранится переменная подсказка

    Конфигурация приглашения Bash хранится в файле .bashrc вашей учетной записи, который находится по адресу ~ / .Bashrc. Итак, если ваше имя пользователя bob, файл находится на /home/bob/.bashrc.

    Вы можете открыть файл для просмотра текущей переменной Bash. В качестве примера текстового редактора мы будем использовать nano, хотя вы также можете использовать vi, emacs или любой другой текстовый редактор, с которым вам удобно. Откройте терминал и запустите:

    нано ~ / .bashrc

    Прокрутите вниз до PS1 = раздел. Первая переменная выглядит довольно сложной, потому что она включает информацию о цвете - мы объясним это позже. Вторая переменная без информации о цвете выглядит следующим образом:

    $ Debian_chroot: + ($ debian_chroot) \ и @ \ ч: \ ш \ $

    Это все еще немного сложно из-за $ Debian_chroot: + ($ debian_chroot) биты. Они просто сообщают Bash, чтобы вы знали, используете ли вы среду chroot Debian и обычно не будут отображаться. Игнорируя их, вот структура по умолчанию переменной приглашения Bash:

    \ И @ \ ч: \ ш \ $

    \ и указывает ваше имя пользователя, @ указывает на знак @, \час указывает имя хоста (имя компьютера), : указывает на: символ, \ ш указывает на рабочий каталог, и \ $ указывает $, если вы обычный пользователь или #, если вы root. Итак, сложив все вместе, вы получите имя пользователя @ имя хоста: 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:

    • Колокольный персонаж: \ а
    • Дата в формате «День недели, месяц, месяц» (например, «Вторник 26 мая»): \ d
    • Формат передается в strftime (3), а результат вставляется в строку приглашения; пустой формат приводит к представлению времени, зависящему от локали. Брекеты необходимы: \ D формат
    • Спасательный персонаж: \ е
    • Имя хоста, вплоть до первого '.': \час
    • Имя хоста: \ЧАС
    • Количество заданий, в настоящее время управляемых оболочкой: \ J
    • Базовое имя терминального устройства оболочки: \ л
    • Новая строка: \ п
    • Возврат каретки:
    • Имя оболочки, базовое имя $ 0 (часть после последней косой черты): \ s
    • Время в 24-часовом формате ЧЧ: ММ: СС: \ т
    • Время в 12-часовом формате ЧЧ: ММ: СС: \ T
    • Время в 12-часовом формате: \ @
    • Время в 24-часовом формате ЧЧ: ММ: \ A
    • Имя пользователя текущего пользователя: \ и
    • Версия Bash (например, 2,00): \ v
    • Выпуск Bash, версия + уровень исправления (например, 2.00.0): \ V
    • Текущий рабочий каталог с $ HOME, сокращенно обозначенным тильдой (используется переменная $ PROMPT_DIRTRIM): \ ш
    • Базовое имя $ PWD с $ HOME, сокращенно обозначенным тильдой: \ W
    • Номер истории этой команды: \!
    • Номер команды этой команды: \ #
    • Если эффективный uid равен 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 \] \ $

    Это на самом деле просто \ И @ \ ч: \ ш $ переменная из ранее, но с информацией о цвете. На самом деле, мы можем разбить его на несколько разделов:

    \ [\ 033 [01; 32m \]\ И @ \ ч \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ ш \ [\ 033 [00m \]\ $

    Первый раздел \ И @ \ ч бит, которому предшествует информация о цвете, которая делает его зеленым. Второе - это : символ, которому предшествует информация о цвете, которая удаляет любую окраску. Третий \ ш бит, которому предшествует информация о цвете, которая делает его синим. Четвертый \ $ бит, которому предшествует информация о цвете, которая удаляет любую окраску.

    Как только вы поймете, как создавать собственные цветовые метки, вы можете добавить любые цвета, которые вам нравятся, в любые разделы вашего Bash, которые вам нравятся..

    Вот что вам нужно знать: вы должны включить всю информацию о цветовом коде между \ [  а также \] персонажs. Внутри тега вы должны начать с \ 033 [ или же \ Е [ указать Bash, что это информация о цвете. И то и другое \ 033 [ а также \ Е [ сделать то же самое. \ Е [ короче, поэтому может быть удобнее в использовании, но мы будем использовать \ 033 [ здесь, поскольку это соответствует тому, что используется по умолчанию. В конце тега вы должны закончить м \ указать конец цветовой метки.

    Разбивая это, вот как будет выглядеть каждая цветовая метка. Единственное отличие - это информация, которую вы добавляете вместо ЦВЕТА для определения фактического цвета:

    \ [\ 033 [ЦВЕТм \]

    Bash позволяет изменить цвет текста переднего плана, добавить к тексту такие атрибуты, как «полужирный» или «подчеркивание», и установить цвет фона..

    Вот значения для текста переднего плана:

    • Черный: 30
    • Синий: 34
    • Голубой: 36
    • Зеленый: 32
    • Фиолетовый: 35
    • Красный: 31
    • Белый: 37
    • Желтый: 33

    Например, поскольку фиолетовый текст имеет цветовой код 32, вы должны использовать \ [\ 033 [32м \]  для фиолетового текста.

    Вы также можете указать атрибут для текста. Этот атрибут должен быть добавлен перед номером цвета, разделенным точкой с запятой (;). Текст с этими атрибутами будет выглядеть по-разному в разных эмуляторах терминала.

    Вот значения для текстовых атрибутов:

    • Нормальный текст: 0
    • Жирный или светлый текст: 1 (зависит от эмулятора терминала.)
    • Тусклый текст: 2
    • Подчеркнутый текст: 4
    • Мигающий текст: 5 (Это не работает в большинстве эмуляторов терминала.)
    • Перевернутый текст: 7 (инвертирует цвета переднего плана и фона, поэтому вы увидите черный текст на белом фоне, если текущий текст - белый текст на черном фоне.)
    • Скрытый текст: 8

    На самом деле вам не нужно включать обычный текстовый атрибут. Во всяком случае, это по умолчанию.

    Например, поскольку красный текст - это код 31, а жирный текст - это код 1, вы должны использовать \ [\ 033 [1; 31м \] для жирного красного текста.

    Вы также можете указать цвет фона, но вы не можете добавить атрибут к цвету фона.

    Вот значения для цветов фона:

    • Черный фон: 40
    • Голубой фон: 44
    • Голубой фон: 46
    • Зеленый фон: 42
    • Фиолетовый фон: 45
    • Красный фон: 41
    • Белый фон: 47
    • Желтый фон: 43

    Например, поскольку синий фон имеет код 44, \ [\ 033 [44м \] указал бы синий фон.

    Вы можете указать теги цвета переднего плана и фона. Например, 42 представляет зеленый фон, а 31 - красный текст. Таким образом, чтобы приглашение по умолчанию стало красным текстом на зеленом фоне, вы должны использовать:

    PS1 = "\ [\ 033 [42м \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "

    Здесь мы просто указываем один цвет фона, а затем один цвет текста переднего плана, который начинается в начале приглашения и применяется ко всему тексту в приглашении. Тем не менее, вы можете указать столько цветовых тегов, сколько вы хотите в переменной для окрашивания различных разделов вашего приглашения, как вам нравится.

    Цвета фона и текста переднего плана продолжают отображаться, пока вы не укажете код цвета 00, чтобы очистить информацию о цвете. Вы также можете использовать этот тег в переменной, чтобы сбросить форматирование назад по умолчанию где-то в вашем приглашении. Например, следующая строка заканчивает все цвета перед \ $ персонаж.

    PS1 = "\ [\ 033 [42м \] \ [\ 033 [31м \] \ и @ \ ч: \ ш \\ [\ 033 [00м \] \ $ "

    Как установить новую подсказку по умолчанию

    Когда вы закончите экспериментировать с цветами, у вас должна появиться подсказка Bash, которая вам нравится в текущем сеансе. Но вы, вероятно, хотите сделать этот новый запрос постоянным, чтобы он автоматически использовался во всех ваших сеансах Bash.

    Для этого вам просто нужно изменить содержимое переменной PS1 в файле .bashrc, который мы рассматривали ранее.

    Откройте файл .bashrc в предпочитаемом вами текстовом редакторе, например так:

    нано ~ / .bashrc

    Прокрутите вниз и найдите раздел PS1 =. Просто замените переменную по умолчанию вашей настроенной переменной. Вы, вероятно, захотите покинуть $ Debian_chroot: + ($ debian_chroot)  однако биты одни - они не появятся, если вы не находитесь в среде chroot, в любом случае.

    Введите цветную переменную PS1 под if ["$ color_prompt" = yes]; затем линия. Введите переменную без цветов под еще линия.

    Сохраните файл и закройте текстовый редактор. Например, чтобы сохранить файл в nano, нажмите Ctrl + O, нажмите Enter, а затем нажмите Ctrl + X, чтобы выйти.

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