Найти в Дзене

Изменяем оформление командной строки в терминале Linux

Широкие возможности кастомизации дистрибутивов Linux касаются не только многообразия этих самых дистрибутивов и сред рабочего окружения для них. В Linux можно изменить даже терминал, чтобы сделать работу в нем приятной глазу. Далее расскажу то, как изменить оформление командной строки в консоли. Что будем менять? На скриншоте ниже представлен сервер, который использую для обучения на курсе по DevOps, он создан в Яндекс Облаке. Видим, что в месте, где находится курсор показывается имя пользователя, под которым осуществлено подключение и имя компьютера (хоста). Именно это оформление мы и будем менять. Давайте сделаем так, чтобы командная строка выглядела следующим образом: -> [ПРОСТО КОД] Добавим еще цветов, сделав стрелку красной, а квадратные скобки и название канала зеленым. Разберем способ настройки на этом примере и потом уже по аналогии вы сможете сделать любое нужное оформление. Переменные окружения Вспомним про то, что в Linux-дистрибутивах есть такие штуки, как переменные окруж
Оглавление

Широкие возможности кастомизации дистрибутивов Linux касаются не только многообразия этих самых дистрибутивов и сред рабочего окружения для них. В Linux можно изменить даже терминал, чтобы сделать работу в нем приятной глазу. Далее расскажу то, как изменить оформление командной строки в консоли.

Что будем менять?

На скриншоте ниже представлен сервер, который использую для обучения на курсе по DevOps, он создан в Яндекс Облаке. Видим, что в месте, где находится курсор показывается имя пользователя, под которым осуществлено подключение и имя компьютера (хоста).

Терминал на учебном сервере
Терминал на учебном сервере

Именно это оформление мы и будем менять. Давайте сделаем так, чтобы командная строка выглядела следующим образом:

-> [ПРОСТО КОД]

Добавим еще цветов, сделав стрелку красной, а квадратные скобки и название канала зеленым. Разберем способ настройки на этом примере и потом уже по аналогии вы сможете сделать любое нужное оформление.

Переменные окружения

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

Пример переменных окружения
Пример переменных окружения

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

Просмотр значения переменной PS1
Просмотр значения переменной PS1

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

Способы изменения переменных окружения

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

export USER=prosto

Меняем значение переменной $USER
Меняем значение переменной $USER

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

Если переподключиться к серверу, то значение переменной сбросится
Если переподключиться к серверу, то значение переменной сбросится

Вторым способом является изменение конфигурационного файла оболочки и указание там команды export с нужными значениями. Стандартный конфигурационный файл именуется, как .bashrc, но помним, что если установлена ZSH в качестве оболочки, то ее настройка происходит через файл .zshrc. Например, попробуем создать собственную переменную PING и задать ее значение через конфиг.

Задаем собственную переменную окружения
Задаем собственную переменную окружения

В примере на скриншот я открыл в текстовом редакторе nano файл .bashrc, вставил туда строку export PING="PONG" и после сохранения изменений перезапустил оболочку командой . .bashrc. Становится понятным, что для реализации задуманного нам подойдет второй способ: через конфигурационный файл оболочки мы зададим значение переменной $PS1, чтобы после каждого подключения она не стиралась.

Играем в PING-PONG
Играем в PING-PONG

Знакомимся с параметрами $PS1

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

Таблица со значениями специальных символов для переменной PS1
Таблица со значениями специальных символов для переменной PS1

Как понимаете, нам специальные символы не понадобятся, мы обойдемся стандартными. Дополнительно каждому выводимому элементу можно назначить цветовое оформление. Общий синтаксис раскрашивания такой:

\e[X;YmСТРОКА ДЛЯ РАСКРАШИВАНИЯ\e[m

Из введенной строки \e[ обозначает начало цветовой схемы, X;Ym - цветовая пара (X;Y), которая задает цвет и \e[m это окончание цветовой схемы. В цветовой паре мы видим символы X и Y. Символ X может принимать значение от 0 до 5, где:

  • 0 - обычный цвет
  • 1 - будет использоваться более яркий цвет
  • 2 - более темный цвет
  • 3 - курсив
  • 4 - подчеркивание
  • 5 - моргание

Символ Y может принимать любое из числовых значений, которое соответствует цвету. Скриншот таблицы с соответствием чисел цвету привожу ниже.

Таблица соответствия цвета числовому значению
Таблица соответствия цвета числовому значению

В моем случае, значение этой переменной уже задается в файле .bashrc, причем задается с условием: если терминал поддерживает цвета, то отображается цветная версия. Я убрал эти значения, чтобы использовать только тот код, который указан в статье. После этого терминал стал выглядеть так, как на скриншоте ниже.

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

export PS1="\e[2;31m->\e[m \e[2;32m[ПРОСТО КОД]\e[m "

Теперь открываю конфиг и использую указанную выше строку. Далее перезагружаю оболочку и смотрим на результат.

Измененный конфигурационный файл .bashrc
Измененный конфигурационный файл .bashrc

Получилось ровно как и задумывали: и в плане наполнения, и в плане цветового оформления.

Итоговый результат
Итоговый результат

Подведем итог

Опять-же повторюсь, в статье мы разобрали очень простой пример того, как можно изменить приглашение командной строки. Используя все возможные, и не только, символы энтузиасты превращают командную строку в настоящее произведение искусства.

Думаю, что желающим привнести что-то новое в терминал, материал окажется интересным и полезным.