Цветная консоль

Консоль – великая вещь. Это тончайший инструмент, словно скальпель: то что порой невозможно (или долго/неудобно) сделать через кнопочки или менюшки в консоли делается порой буквально парой команд. Но любой инструмент нужно настраивать, и консоль в данном случае не исключение. Одна из таких настроек – это “раскрашивание” консоли, о чем я и намерен рассказать.

Лично я привык пользоваться bash‘ом. Он удобный, функциональный, и обычно используется по умолчанию в большинстве дистрибутивов linux и Unix.

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

. .bashrc

Да, я не опечатался, именно 2 точки через пробел. Но руками печатать всякий раз эту команду при заходе в консоль лениво. Поэтому сделаем автозапуск. Для этого создадим файл .bash_profile (или правим уже существующий) в котором пишем:

source ~/.bashrc

Теперь что касается конкретных настроек. Для примера – мои файл .bashrc выглядит вот так:

# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ls='ls -aG'
alias df='df -h'
alias du='du -sh'
alias ps='ps -uax'

#PS1='[\t] $PWD> '
PS1="\[\033[1;31;40m[\033[1;33;40m\u\033[1;31;40m@\033[1;34;40m\h:\033[1;32;40m\w\033[1;31;40m]\]\033[1;37;40m "

echo -e "\033[1;31;40m************************************* \033[1;34;40m"
echo -e "\033[1;31;40m* Welcome in BlackICE claster * \033[1;34;40m"
echo -e "\033[1;31;40m You are logged as: \033[1;33;40m$USER\033[1;31;40m \033[1;34;40m"
echo -e "\033[1;31;40m************************************* \033[1;37;40m"

shopt -s histappend
PROMPT_COMMAND='history -a'
shopt -s cdspell
export HISTIGNORE="&:ls:[bf]g:exit"
shopt -s cmdhist

UPD: Привет из матрицы :). Как сделать весь текст зеленым а заодно понять что означает магическая строка PS1=… ? Эта строка отвечает за расцветку, а именно \033[1;31;40m – где 31 цвет, а 40 – обрамление, 1 или 0 определяет будет текст жирным или нормальным. Вот картинка показывающая основные цвета:

Немного ссылок по теме:
http://mywiki.wooledge.org/BashFAQ/037
http://wiki.bash-hackers.org/scripting/terminalcodes
http://unixforum.org/index.php?showtopic=5816&st=0&p=60004&#entry60004