Изменить цвет приглашения linux

Как сделать приглашение командной строки Bash разноцветным

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

Вид приглашения командной строки Bash определяется переменной PS1. Его можно просмотреть как любую другую переменную окружения:

Сравнив вывод команды [\u@\h \W]\$ с самим приглашением [ya@antony

]$ можно сделать следующие выводы:

1. Символы [, @, ], $ означают сами себя.

2. \u — специальный символ, означающий логин пользователя «ya».

3. \h — специальный символ, означающий имя компьютера (хоста) «antony».

4. \W — специальный символ, означающий рабочую директорию. (Как известно, тильда (

) обозначает домашнюю директорию).

В данном примере мы без труда разобрались со структурой переменной PS1 из дистрибутива AltLinux 4.1. В других дистрибутивах структура эта может оказаться далеко не столь очевидной. Например, в дистрибутиве Debian Lenny:

Что означает вся первая часть \[\e]0;\u@\h: \w\a\]$ можно разобраться только с помощью специальных руководств. Даже man bash , где все специальные символы описаны вкратце в разделе PROMPTING (ПРИГЛАШЕНИЯ) , не позволяет понять, что же там зашифровано. Зато последняя часть \u@\h:\w]\$ почти совпадает с разобранным нами приглашением AltLinux. Отсутствуют только квадратные скобки, да имеется двоеточие, а в целом приглашение выглядит так:

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

Раскрашивание производится внесением определенных изменений в структуру переменной PS1.

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

Таким образом, чтобы расцветить некую часть приглашения, нужно непосредственно перед этой частью подставить выражение \[\033[Хm\] . В случае желтого цвета, вместо Х подставляем 33;1 . Если подставить просто 33 , то получится кирпичный цвет; если 33;4 то кирпичный подчеркнутый; если 33;5 то кирпичный символ станет мигать; если 33,7 то будет черный символ в кирпичном квадратике. К слову сказать, безразлично в каком порядке ставить значения вокруг точки с запятой, так 33;1 эквивалентно 1;33 .

Вот таблица основных цветов

Добавление к номеру цвета через точку с запятой единицы дает более светлый оттенок:

Добавление к номеру цвета через точку с запятой четверки дает подчеркивание:

Добавление к номеру цвета через точку с запятой пятерки дает мигающий символ:

Добавление к номеру цвета через точку с запятой семерки дает черный символ на фоне соответствующего цвета:

Если вместо номеров 30-38 подставить номера 40-48, то окрашиваться в те же самые цвета будут не символы, а фон вокруг них. Например:

Можно также составлять более сложные комбинации цветов фона и шрифта:

Словом, огромный простор для экспериментов.

Внимательно просмотрев все вышеприведенные команды PS1=». » следует обратить внимание, что все они заканчиваются одним и тем же выражением \[\033[m\] . Дело в том, что данное выражение равнозначно выражению \[\033[0m\] , что задает «никакой» цвет, то есть тот цвет, что был первоначально. Это необходимо, чтобы весь дальнейший текст (вводимые команды, параметры, вывод команд) производился обычным цветом консольного текста, а не окрашивался в новые цвета.

Читайте также:  Windows 10 просмотр прерываний

При расцвечивании приглашения командной строки мы не обязаны ограничиваться только знаком доллара. Можно окрасить любую часть приглашения в один из перечисленных цветов. Например, окрасим ya@antony в темно-красный цвет. На черном фоне это будет заметно и не слишком ярко:

Раскрашивайте приглашение командной строки на свой вкус, однако помните, что стоит закрыть окно консоли, как все ваши краски исчезнут.

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

Теперь окно эмулятора терминала будет всегда открываться с цветным приглашением. Также будет оно цветным и в терминале, открываемом при помощи комбинации клавиш CTRL+ALT+Fn.

Но стоит вам сменить логин, например на root, как консоль снова станет одноцветной. Это лишний раз напомнит вам, что вы обладаете правами суперпользователя и должны соблюдать осторожность. А можете раскрасить также и root-консоль, только в другие цвета, чтобы сразу было видно. Для этого нужно строку PS1=». » вписать в файл /root/.bashrc/ .

Источник

Разноцветные терминалы

В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле

/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).

Для начала рассмотрим простой вариант, мой любимый формат командной строки.

Результат будет вот такой:

Это обычное использование переменной PS1, но если бы я не начал с этого — рассказ был бы неполным. Обычно в переменной PS1 с помощью специальных последовательностей символов определяют формат приглашения для ввода команд. Подробный список этих последовательностей можно почитать в документации к bash, в данном примере:

  • \t — вывод «текущего времени», на самом деле это получается время завершения выполнения предыдущей команды, удобно когда перед глазами.
  • j\j — выводит символ j и после него количество запущенных job, т.е. процессов в фоне. Это тоже удобно иметь перед глазами чтобы случаем про них не забыть когда соберешься закрыть терминал.
  • \u@\h — имя пользователя и название сервера. Если работаете с несколькими серверами через удаленные терминалы — чтобы не путаться.
  • \w — после двоеточия — рабочая директория.
  • \n — поскольку строка получилась хоть и информативной (что-то вроде статус бара), но длинной, то приглашаем вводить команды с новой строки, а эта верхняя строка будет наглядно отделять от результата работы предыдущей команды.
  • \$ — на новой строке будет выводится символ либо $ для обычного пользователя либо # для root’а и отделив его пробелом можно приглашать вводить новую команду.

Казалось бы, чего еще желать… Но дальше будет интереснее. Дело в том, что с помощью специальных управляющих символов можно задавать цвет выводимого текста, цвет курсора и даже переопределять title bar у таких графических терминалов, как Gnome2. И, на мой взгляд, довольно удобно когда цветом отделяются терминалы запущенные на различных серверах. Для меня каждый сервер ассоциируется с каким-то цветом и в этот цвет мы будем красить командную строку и курсор на каждом сервере.

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

Читайте также:  Зависает bootcamp при загрузке по для windows

Просто заношу коды цвета в переменные. Но, как вы заметили, что способ задания цвета для курсора и для текста командной строки — разный. Почему-то так исторический получилось. Чтобы понять, какой цвет каким кодом кодируется, есть подходящая картинка.

Посредине — обозначение цвета для цвета курсора, снизу — обозначение цвета для текста. Как вы можете увидеть, что я для текста и курсора использую цвет морской волны. Т.к. название сервера petrel («буревестник»), то он ассоциируется у меня с этим цветом.

Теперь .bashrc, тоже показываю его не полностью, а только то что имеет отношение к теме:

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

Еще две переменные определяю с чисто красным цветом, он будет использоваться для маркировки терминалов привелигированного пользователя (root’а).

Тут проверяется какой используется терминал. Для любого неизвестного или неподдерживающего цвета будет использоваться приглашение без цвета (PS1=’\t j\j \u@\h:\w\n\$ ‘) так, как я это описал в начале статьи. Но если имя терминала начинается на xterm или rxvt, например, так себя позиционирует терминал Gnome, начинаем кудесить с цветом. Первая строчка — задаем цвет текста — цвет сервера и выводим первую строку приглашения ввода команд. Она всегда будет окрашена в цвет сервера. Вторая строчка — проверяем, работаем ли мы под непривелигированным или привелигированным пользователем (root’ом). Если root — то переопределяем цвета на красный. Третья строчка — формируем вторую строчку приглашения и определяем цвет курсора в терминале. Т.е. там у нас получится либо $ и через пробел курсор, оба покрашенные в цвет сервера, если пользователь обычный. Либо красный # и через пробел красный курсор, если это root.

А это, если честно, один в один скопированно из первоначального .bashrc от Дебиана. Знаю, что этот код видоизменяет title bar у окна, размещает там информацию об пользователе, сервере и домашней директории. Но поскольку этот код придумал не я, комментировать его не буду.

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

Источник

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

Введение

Строка приветствия или приглашения (prompt) представляет собой текст, после которого пользователь может вводить команды в терминале Linux. В каждом дистрибутиве Linux строка приветствия имеет свою форму, например в CentOS 7 по умолчанию она выглядит так:

Вид строки приглашения по умолчанию в CentOS 7

Форма строки приглашения хранится в переменной PS1 .

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

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

  • \u — (user) имя текущего пользователя.
  • \h — (host) имя текущего хоста.
  • \W — (working directory) путь к рабочему каталогу (каталог, где сейчас находится пользователь).
  • \\$ — тип пользователя (# — для root, $ — для обычных пользователей).

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

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

Сохраним текущий формат строки приветствия в новую переменную — PS1_SAVE .

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

Читайте также:  Создание резервной копии windows 10 средствами windows

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

Простые экранируемые символы

  • \a — звуковой сигнал (ASCII: 07)
  • \e — символ escape-последовательности
  • \» — двойные кавычки
  • \\ — обратный слэш
  • \n — новая строка
  • \r — возврат каретки (курсора) на начало строки
  • \[ — начало последовательности непечатных символов
  • \] — конец последовательности непечатных символов
  • \nnn — восьмеричный код символа (\113 -> K)

Вывод даты и времени

  • \d — дата в формате «день недели месяц число»
  • \D <формат даты>— дата в указанном формате, например \D
  • \@ — время в 12 часовом формате «часы:минуты AM\PM»
  • \A — время в 24 часовом формате «часы:минуты»
  • \t — время в 24 часовом формате «часы:минуты:секунды»
  • \T — время в 12 часовом формате «часы:минуты:секунды

Вывод системной информации

  • \h — имя хоста до первой точки
  • \H — полное имя хоста
  • \j — количество работ (jobs), выполняемых в терминале (скрытых после нажатия Ctrl+Z)
  • \s — имя текущей оболочки (вывод значения переменной — $0)
  • \u — имя текущего пользователя
  • \v — версия оболочки BASH
  • \V — более детальная версия оболочки BASH
  • \w — полный путь к текущей директории
  • \W — имя текущей директории
  • \! — номер текущей команды в истории команд
  • \# — номер текущей команды за период сессии
  • \\$ — тип пользователя (# — для root, $ — для всех остальных)

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

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

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

/.bashrc или /etc/bashrc .

Сохранение нового формата строки приглашения на постоянной основе

При каждом запуске терминала значение переменной PS1 устанавливается в соответствии с тем значением, которое указано в файле /etc/bashrc . Однако крайне не рекомендуется изменять что-либо в этом файле. Вместо редактирования файла /etc/bashrc предусмотрен специальный каталог /etc/profile.d , в котором можно создавать свои файлы *.sh с необходимым вам функционалом.

Создадим файл /etc/profile.d/custom.sh для необходимой нам настройки оболочки bash. Данный файл будет автоматически импортирован в /etc/bashrc , поэтому никаких дополнительных действий не потребуется.

Далее уставим нужное нам значение переменной PS1 , я также добавлю немного цвета для строки приветствия.

PS1=»\e[1;38;5;48m\u@\h\e[m:\e[1;38;5;45m\w\e[m\n\\$ »
# Добавим сообщение для авторизованных пользователей
logged_user=$USER # Логин пользователя
echo -e «\e[1;38;5;215mЗдравствуйте $, добро пожаловать на сервер meliorem.ru!\e[0m»

Для применения новых настроек в файле /etc/profile.d/custom.sh необходимо перезапустить терминал. Также для перезапуска можно использовать команду exec.

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

Результат изменения строки приглашения в файле /etc/profile.d/custom.sh

Важно, что все эти настройки будут применены для всех пользователей. Если вы хотите настроить bash только для одного пользователя, то используйте скрытый файл .bashrc , который находится в домашнем каталоге пользователя. Для применения настроек в

/.bashrc необходимо будет перезапустить оболочку — source

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

Понравилась статья? Расскажите о ней друзьям!

Источник

Оцените статью