11/12/2008

Украшаем Bash

Вдруг если кому то надоело стандартное приглашение bash, то можно его несколько приукрасить. Итак, читаем документацию по баш (кстати это очень удобно делать с помощью emacs'a), и открываем для себя переменную PS1, значение этой переменной, интерпретируется как основное приглашение командной строки.
Цвета символов терминала обозначаются с помощью следующих числовых кодов:
#Black 0;30 Dark Gray 1;30
#Blue 0;34 Light Blue 1;34
#Green 0;32 Light Green 1;32
#Cyan 0;36 Light Cyan 1;36
#Red 0;31 Light Red 1;31
#Purple 0;35 Light Purple 1;35
#Brown 0;33 Yellow 1;33
#Light Gray 0;37 White 1;37

На самом же деле в терминале они задаются с помощью хитрых escape -последовательностей. Для простоты можно обозначить цвета с помощью переменных:
RED="\[\033[0;31m\]"
YELLOW="\[\033[1;33m\]"
L_BLUE="\[\033[0;36m\]"
EMPTY="\[\033[0m\]"

Теперь настраиваем приглашение:

export PS1="$RED[$YELLOW\A$RED] $L_BLUE\u@\h:\w >$EMPTY "

По порядку слева на право:
export PS1 - экспортируем переменную, PS1, равную вот такой длинной строке.
$RED[ - устанавливаем цвет в красный, и печатаем открывающую скобку
$YELLOW\A - устанавливаем цвет в желтый, и выводим текущее время в HH:MM формате. Более полный список последовательностей можно посмотреть в секции PROMPTING в документации по bash.
$RED] устанавливаем цвет в красный, и печатаем закрывающую скобку
$L_BLUE\u@\h - устанавливаем цвет в голубой что ли ), и выводим имя пользователя@имя_хоста.
:\w>$EMPTY - затем выводим полный путь к текущему каталогу и символ ">", после которого сообщаем bash'у, что все остальные символы ни каким цветом раскрашивать не надо.
Вот собственно и все.
Более подробную информацию можно почерпнуть из манула.
А выглядит это примерно так:

1 комментарий:

  1. Саша забыл добавить, что все эти процедуры с созданием переменных окружения и изменением приглашения bash надо не забыть дописать в файлик ~/.bashrc
    А то при следущем запуске прийдется повторять все процедуры заново.

    ОтветитьУдалить