Меню

Настройка внешнего вида bash



Как настроить цвета и содержимое Bash в командной строке терминала Linux

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

Если вам интересно, как настроить этот параметр для лучшей читабельности или просто у вас появилось такая прихоть, дочитайте до конца — в этой статье мы объясним, как это сделать.

Переменная окружения PS_ Bash

Командная строка и внешний вид терминала определяются переменной среды PS1. Согласно странице man Bash, PS1 представляет собой основную строку, которая отображается, когда оболочка готова к чтению команды.

Допустимый контент в PS1 состоит из нескольких специальных символов с обратным слэшем, значение которых указано в разделе PROMPTING на странице руководства.

Чтобы стало яснее, давайте выведем текущее содержимое PS1 в нашей системе (в вашем случае результат может выглядеть иначе):

Теперь мы объясним, как настроить PS1 в соответствии с нашими потребностями.

Настройка формата PS1

Согласно разделу PROMPTING на странице руководства, ниже приведено значение каждого специального символа:

  • \u: имя пользователя (текущего пользователя).
  • \h: имя хоста до первой точки (.).
  • \W: базовое имя текущего рабочего каталога, с $HOME (сокращенно тильдой

).

  • \$: если текущий пользователь root, пропишите «, в противном случае «$«.
  • Например, мы можем захотеть добавить \! если мы хотим отобразить номер истории текущей команды или \H, если мы хотим отобразить полное доменное имя вместо короткого имени сервера.

    В следующем примере мы импортируем обе опции в нашу текущую среду, выполнив следующую команду:

    Когда вы нажмете Enter, вы увидите, что содержимое запроса изменится, как показано ниже. Сравните запрос до и после выполнения вышеуказанной команды:

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

    Фактически, мы можем настроить три аспекта:

    Формат текста Цвет переднего плана (текст) Цвет фона
    0: нормальный текст 30: Черный 40: Черный
    1: жирный 31: Красный 41: Красный
    4: подчёркнутый текст 32: Зеленый 42: Зеленый
    33: Желтый 43: Желтый
    34: Голубой 44: Голубой
    35: Фиолетовый 45: Фиолетовый
    36: Бирюзовый 46: Бирюзовый
    37: Белый 47: Белый

    Мы будем использовать специальный символ \e в начале и m в конце, чтобы указать, что далее прописана последовательность цветов.

    В этой последовательности три значения (фон, формат и передний план) разделяются запятыми (если значение не задано по умолчанию).

    Кроме того, поскольку диапазоны значений отличаются друг от друга, не имеет значения, какой из них (фон, формат или передний план) вы указываете первым.

    Например, следующий PS1 выведет запрос в желтом подчеркнутом тексте с красным фоном:

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

    Чтобы сделать эти изменения постоянными, вам нужно будет добавить следующую строку

    /.bash_profile в зависимости от вашего дистрибутива:

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

    Спасибо за уделенное время на прочтение статьи!

    Если возникли вопросы, задавайте их в комментариях.

    Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

    Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

    Источник

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

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

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

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

    Формат строки приглашения задается в переменной окружения PS1. Чтобы настроить приглашение, необходимо изменить значение переменной PS1.

    Например, переменная PS1 может иметь значение:

    Или, например, командой echo $PS1 можно вывести текущее значение переменной PS1. У меня в Ubuntu оно выглядит так:

    Не пугайтесь. На самом деле существует масса возможностей для настройки строки приглашения. Ниже мы рассмотрим базовые методы настройки.

    Как изменить приглашение (только для данной сессии)

    Можно установить переменную PS1 только для текущей сессии в терминале. Это удобно, пока вы подбираете, как будет выглядеть строка приглашения. Чтобы это сделать нужно выполнить команду export для переменной PS1, например:

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

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

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

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

    Обозначение Описание
    \a ASCII-символ bell (07)
    \d Дата в формате «День недели Месяц Дата» (например, «Пн Ноя 26»)
    \D

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

    Примеры

    Пример 1

    Приглашение, состоящее из одного символа « > »:

    Пример 2

    Текущее время, пользователь, текущая директория:

    Пример 3

    Дата, пользователь, текущая директория, номер команды:

    Как изменить цвета в строке приглашения

    Элементы строки приглашения можно раскрашивать в разные цвета.

    Чтобы задавать цвета для элементов строки приглашения нужно части строки приглашения заключать в специальные символы.

    Используется следующий синтаксис:
    \e[ X;Ym РАСКРАШИВАЕМАЯ_СТРОКА \e[m

    \e[ — начало цветовой схемы.
    X;Ym — цветовая пара (X;Y). Именно значения X и Y определяют цвет.
    \e[m — окончание цветовой схемы.

    Небольшой пример, чтобы вы понимали о чем идет речь. Раскрасим всю строку целиком цветом с обозначением 0;36.

    Цвета задаются числами. Можно задавать парой 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 — моргание.

    Примеры

    Пример 1

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

    Пример 2

    Раскрасим остальные элементы строки приглашения:

    Как изменить приглашение на постоянной основе

    Новое значение переменной PS1 прописывается в файле .bashrc , который расположен в вашей домашней директории (файл может отсутствовать).

    Откроем файл .bashrc в редакторе nano для редактирования. Для этого в терминале выполним команду:

    Перейдем в конец файла и добавим новую строку, в которой пропишем значение переменной PS1. Например:

    Сохраним изменения и закроем файл. Для этого нажмите Ctrl+X , затем Y и Enter , чтобы сохранить изменения.

    Теперь выполним команду source, чтобы наши изменения вступили в силу:

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

    Источник

    Пользовательская настройка командной строки Bash

    Командная строка очень часто используется для управления сервером Linux.

    Многие дистрибутивы системы предлагают достаточно удобные настройки командной строки по умолчанию. Однако иногда возникает необходимость расширить набор функций и возможностей. В таком случае можно выполнить пользовательскую настройку командной строки.

    Примечание: Руководство выполнено на Ubuntu 12.04 VPS, но большинство дистрибутивов Linux работает подобным образом.

    Проверка оболочки

    Прежде чем приступить к работе, нужно убедиться, что вы используете оболочку bash.

    Обычно в системах Linux используется именно bash, но иногда некоторые дистрибутивы предлагают другие оболочки.

    Чтобы убедиться, что вы работаете в bash, проверьте файл /etc/passwd:

    Каждая строка этого файла содержит информацию о каждом отдельном пользователе системы. Найдите в файле текущего пользователя и пользователя root (первый столбец). В последнем поле будет указана оболочка пользователя по умолчанию.

    root:x:0:0:root:/root:/bin/bash
    . . .
    demouser:x:1000:1000. /home/demouser/bin/bash

    Если в этом поле указано не /bin/bash, отредактируйте файл с правами root, указав необходимую оболочку:

    sudo nano /etc/passwd

    После этого выйдите и войдите снова, чтобы обновить настройки.

    Просмотр текущих значений

    Для начала нужно ознакомиться с текущими настройками конфигурационных файлов bash.

    Командная строка bash настраивается с помощью переменных среды PS1 и PS2. PS1 определяет текст приглашения оболочки; именно его вы видите при входе в систему. В Ubuntu по умолчанию этот текст выглядит так:

    Символ $ в конце строки указывает, что эта строка принадлежит обычному пользователю. Командная строка пользователя root отличается, она оканчивается символом #.

    PS2 настраивает многострочные команды. Чтобы узнать текущее значение переменной PS2, введите:

    Нажмите Enter. На экране появится текущее значение переменной; по умолчанию в Ubuntu это >.

    Как правило, эти переменные хранятся в файле

    /.bashrc, который система читает при запуске интерактивной оболочки.

    В Ubuntu 12.04 в этом файле есть такой раздел:

    # uncomment for a colored prompt, if the terminal has the capability; turned
    # off by default to not distract the user: the focus in a terminal window
    # should be on the output of commands, not on the prompt
    # force_color_prompt=yes
    if [ -n «$force_color_prompt» ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it’s compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
    fi
    if [ «$color_prompt» = yes ]; then
    PS1=’$\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ‘
    else
    PS1=’$\u@\h:\w\$ ‘
    fi
    unset color_prompt force_color_prompt

    Чтобы настроить цветную командную строку, раскомментируйте параметр:

    Теперь нужно установить настройки командной строки. Они размещаются в блоке if-else:

    Верхняя часть кода включает поддержку цвета.

    Для примера разберём следующую строку:

    Она выглядит довольно сложно и содержит непонятные компоненты.

    Строки, содержащие debian_chroot, означают, что при работе в окружении chroot командная строка напомнит вам об этом. Это очень полезная функция.

    Остальное определение командой строки выглядит так:

    Этот код описывает приглашение командной строки, которое появилось при входе в систему, используя управляющие последовательности.

    Управляющие последовательности bash

    Чтобы получить полный список управляющих последовательностей оболочки, откройте мануал:

    \a an ASCII bell character (07)
    \d the date in «Weekday Month Date» format (e.g., «Tue May 26»)
    \Dthe format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
    \e an ASCII escape character (033)
    \h the hostname up to the first `.’
    \H the hostname
    \j the number of jobs currently managed by the shell
    \l the basename of the shell’s terminal device name
    \n newline
    \r carriage return
    \s the name of the shell, the basename of $0 (the portion following the final slash)
    \t the current time in 24-hour HH:MM:SS format
    \T the current time in 12-hour HH:MM:SS format
    \@ the current time in 12-hour am/pm format
    \A the current time in 24-hour HH:MM format
    \u the username of the current user
    \v the version of bash (e.g., 2.00)
    \V the release of bash, version + patch level (e.g., 2.00.0)
    \w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
    \W the basename of the current working directory, with $HOME abbreviated with a tilde
    \! the history number of this command
    \# the command number of this command
    \$ if the effective UID is 0, a #, otherwise a $
    \nnn the character corresponding to the octal number nnn
    \\ a backslash
    \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
    \] end a sequence of non-printing characters

    Как видите, на данный момент строка содержит имя пользователя (\u), символ @, первую часть имени хоста (\h), текущий рабочий каталог (\w) и символ командной строки ($ для обычных пользователей и # для root).

    Теперь закройте файл

    Тестирование командной строки bash

    Конечно, чтобы настроить командную строку, можно просто отредактировать файл

    /.bashrc. Однако намного полезнее выполнить пользовательскую настройку строки с помощью самой строки.

    Прежде чем приступить к настройке, сохраните текущее значение PS1, чтобы в случае неудачи можно было вернуть прежнее значение.

    Теперь в сети есть новая переменная ORIG, в которой будет храниться текущее значение PS1.

    Чтобы вернуть командную строку по умолчанию, теперь можно просто ввести:

    Для начала попробуйте изменить текст приглашения оболочки, оставив только имя пользователя и символ $.

    Теперь строка будет выглядеть так:

    Между именем пользователя и символом можно добавить пробел:

    Вместо символа $ можно использовать управляющую последовательность \$. Тогда командная строка будет динамически изменяться в зависимости от пользователя.

    Также в строку можно добавить любой текст, например:

    PS1=»Hello, my name is \u! \$: »
    Hello, my name is demouser! $:

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

    Например, в командной строке может отображаться текущая нагрузка на сервер. Для этого нужно загрузить метрику из файла /proc/loadavg в обратных кавычках:

    PS1=»\u, load: `cat /proc/loadavg | awk ‘< print $1; >‘` \$: »
    demouser, load: 0.01 $:

    Также можно добавить в командную строку время и дату. Для этого используйте:

    PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t) \w \$ »
    [demouser@host, load: 0.01] (Thu Feb 20 — 13:15:20)

    Однако если путь к каталогу очень длинный, строка будет выглядеть довольно сложно.

    cd /etc/systemd/system/multi-user.target.wants
    [demouser@host, load: 0.01] (Thu Feb 20 — 13:18:28) /etc/systemd/system/multi-user.target.wants $

    Чтобы сохранить в строке всю эту информацию, но упростить её восприятие, можно разделить её на две строки при помощи символа \n:

    PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t)\n\w \$ »
    [demouser@host, load: 0.00] (Thu Feb 20 — 13:20:00)
    /etc/systemd/system/multi-user.target.wants $

    Многие пользователи предпочитают не делить командную строку, однако иногда это бывает необходимо.

    Настройка цвета

    Bash позволяет добавлять цвета в командную строку при помощи специальных кодов.

    Чтобы определить цвет, код нужно поместить в скобки \[ и \]. Если код цвета не будет заключен в такие скобки, оболочка прочитает его буквально и просто выведет на экран.

    Затем цвет нужно задать внутри последовательности скобок \[, например:

    Перед последовательностью \] нужно добавить m, чтобы указать, что ы задаёте код цвета.

    В целом синтаксис настройки цвета выглядит так:

    \[\e[ color_information m\]

    Конечно, такой код выглядит достаточно сложно.

    • 30: черный
    • 31: красный
    • 32: зелёный
    • 33: жёлтый
    • 34: синий
    • 35: фиолетовый
    • 36: бирюзовый
    • 37: белый

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

    Это поведение отличается зависимости от используемого терминала. Общие атрибуты:

    • 0: обычный текст
    • 1: жирный (зависит от терминала)
    • 4: подчёркивание

    К примеру, чтобы получить подчёркнутый зелёный текст, нужно ввести последовательность:

    Чтобы сбросить настройки цвета, используйте такую последовательность:

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

    Также можно настраивать цвет фона.

    • 40: черный фон
    • 41: красный фон
    • 42: зелёный фон
    • 43: жёлтый фон
    • 44: синий фон
    • 45: фиолетовый фон
    • 46: Cyan фон
    • 47: белый фон

    Чтобы задать цвет фона, цвет текста и атрибут, используйте:

    \[\e[42;1;36m\]

    Как правило, информацию о фоне лучше отделять от остальных настроек:

    Иногда при использовании обычного текста (0) в некоторых терминалах не работают настройки цвета текста. Чтобы обойти эту проблему, нужно просто не вводить настройки нормального текста, так как они используются по умолчанию.

    Сохранение настроек командной строки

    Итак, теперь вы умеете настраивать цветной текст. В руководстве используется такая последовательность:

    Также можно отключить использование цвета:

    PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t)\n\w \$ «

    Теперь можно отредактировать переменную PS1 в файле

    Как уже говорилось, если вы работаете в окружении chroot, командная строка может сообщить об этом. Эта функция сейчас включена, не отключайте её. Теперь значение переменной будет таким:

    Закомментируйте текущее значение PS1 и скопируйте следующую логику debian_chroot:

    Перед последними кавычками нужно вставить код пользовательских командных строк. Поскольку текущее определение командной строки использует одинарные кавычки, нужно заменить их двойными.

    В первом определении PS1 укажите настройки цветной командной строки, во втором – командной строки без цвета.

    Сохраните и закройте файл.

    Вы сможете пользоваться новой командной строкой в новой сессии.

    Заключение

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

    Добавить комментарий Отменить ответ

    Для отправки комментария вам необходимо авторизоваться.

    Источник

    Читайте также:  Настройки для psp 1000
    Adblock
    detector