Библиотека сайта rus-linux.net
Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
Как сделать приглашение командной строки Bash разноцветным
Алексей Дмитриев, 25 марта 2010В большинстве дистрибутивов приглашение командной строки Bash по умолчанию того же цвета, что и вводимые команды и текст вывода этих команд. При интенсивной работе в консоли, когда вводится множество команд подряд, бывает трудно сразу увидеть, где оканчивается вывод одной команды и начинается ввод другой, особенно если вывод команд большой. К счастью, Bash позволяет выделить приглашение цветом.
Вид приглашения командной строки Bash определяется переменной PS1. Его можно просмотреть как любую другую переменную окружения:
[ya@antony ~]$ echo $PS1 [\u@\h \W]\$
Сравнив вывод команды [\u@\h \W]\$
с самим приглашением [ya@antony ~]$
можно сделать следующие выводы:
1. Символы [, @, ], $
означают сами себя.
2. \u
- специальный символ, означающий логин пользователя "ya".
3. \h
- специальный символ, означающий имя компьютера (хоста) "antony".
4. \W
- специальный символ, означающий рабочую директорию. (Как известно, тильда (~) обозначает домашнюю директорию).
В данном примере мы без труда разобрались со структурой переменной PS1 из дистрибутива AltLinux 4.1. В других дистрибутивах структура эта может оказаться далеко не столь очевидной. Например, в дистрибутиве Debian Lenny:
PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w]\$ "
Что означает вся первая часть \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}
можно разобраться только с помощью специальных руководств. Даже man bash
, где все специальные символы описаны вкратце в разделе PROMPTING (ПРИГЛАШЕНИЯ)
, не позволяет понять, что же там зашифровано. Зато последняя часть \u@\h:\w]\$
почти совпадает с разобранным нами приглашением AltLinux. Отсутствуют только квадратные скобки, да имеется двоеточие, а в целом приглашение выглядит так:
ya@antony:~$
Мы остановились на структуре переменой PS1, чтобы знать, какие специальные символы определяют различные части приглашения командной строки для того, чтобы расцветить их.
Раскрашивание производится внесением определенных изменений в структуру переменной PS1.
Например, чтобы символ доллара сделать желтого цвета, нужно ввести следующую команду:
[ya@antony ~]$ PS1="[\u@\h \W]\[\033[33;1m\]\$ \[\033[m\]"
Вот результат:
Таким образом, чтобы расцветить некую часть приглашения, нужно непосредственно перед этой частью подставить выражение \[\033[Хm\]
. В случае желтого цвета, вместо Х
подставляем 33;1
. Если подставить просто 33
, то получится кирпичный цвет; если 33;4
то кирпичный подчеркнутый; если 33;5
то кирпичный символ станет мигать; если 33,7
то будет черный символ в кирпичном квадратике. К слову сказать, безразлично в каком порядке ставить значения вокруг точки с запятой, так 33;1
эквивалентно 1;33
.
Вот таблица основных цветов
Черный 30 Темно-красный 31 Зеленый 32 Кирпичный 33 Синий 34 Фиолетовый 35 Бирюзовый 36 Серый 37 Ярко-красный 38
Добавление к номеру цвета через точку с запятой единицы дает более светлый оттенок:
31;1 Розовый 33;1 Желтый и так далее.
Добавление к номеру цвета через точку с запятой четверки дает подчеркивание:
Добавление к номеру цвета через точку с запятой пятерки дает мигающий символ:
Добавление к номеру цвета через точку с запятой семерки дает черный символ на фоне соответствующего цвета:
Если вместо номеров 30-38 подставить номера 40-48, то окрашиваться в те же самые цвета будут не символы, а фон вокруг них. Например:
Можно также составлять более сложные комбинации цветов фона и шрифта:
Словом, огромный простор для экспериментов.
Внимательно просмотрев все вышеприведенные команды PS1="..."
следует обратить внимание, что все они заканчиваются одним и тем же выражением \[\033[m\]
. Дело в том, что данное выражение равнозначно выражению \[\033[0m\]
, что задает "никакой" цвет, то есть тот цвет, что был первоначально. Это необходимо, чтобы весь дальнейший текст (вводимые команды, параметры, вывод команд) производился обычным цветом консольного текста, а не окрашивался в новые цвета.
При расцвечивании приглашения командной строки мы не обязаны ограничиваться только знаком доллара. Можно окрасить любую часть приглашения в один из перечисленных цветов. Например, окрасим ya@antony
в темно-красный цвет. На черном фоне это будет заметно и не слишком ярко:
Раскрашивайте приглашение командной строки на свой вкус, однако помните, что стоит закрыть окно консоли, как все ваши краски исчезнут.
Для того, чтобы сделать разноцветное приглашение постоянным, его надо вписать в конец файла .bashrc
в вашем домашнем каталоге. Вписываем в том же виде, как вводили в командную строку:
# Цвета приглашения командной строки: PS1="[\[\033[31m\]\u@\h\[\033[m\] \W]\[\033[33;1m\]\$ \[\033[m\]"
Теперь окно эмулятора терминала будет всегда открываться с цветным приглашением. Также будет оно цветным и в терминале, открываемом при помощи комбинации клавиш CTRL+ALT+Fn.
Но стоит вам сменить логин, например на root, как консоль снова станет одноцветной. Это лишний раз напомнит вам, что вы обладаете правами суперпользователя и должны соблюдать осторожность. А можете раскрасить также и root-консоль, только в другие цвета, чтобы сразу было видно. Для этого нужно строку PS1="..."
вписать в файл /root/.bashrc/
.
Удачи!