Информативные приглашения в bash
Как это выглядит
В данной статье я расскажу как настроить такое приглашение в терминале:

Цвета
Шаблон приглашения хранится в переменной PS1 текущего окружения. Узнать ее текущее значение:
echo $PS1
Настраиваем красное приглашение для рута. Добавляем в /root/.bashrc
export PS1="\[\e[31;1m\]\u@\h \[\e[31;0m\e[33m\]\w# \[\e[0m\]"
Зеленое приглашение для остальных пользователей. Добавляем в ~/.bashrc
export PS1="\[\e[32;1m\]\u@\h \[\e[31;0m\e[32m\]\w \[\e[0m\]"
Перезапустить консоль либо сделать:
source ~/.bashrc
Для того, чтобы изменить цвета на свои, нужно менять цифры: 0, 1, 31, 33
Более подробно о настройке цветов здесь: http://habrahabr.ru/post/94647
Git в bash
Git умеет встраиваться в приглашение почти из коробки. Нужно вызвать функцию __git_ps1
, чтобы получить
информацию о текущем состоянии в скобках. Выглядит это примерно так (только в цветах):
cmx ~/projects/sample (master)
Оборачиваем в цвета и получаем строку:
__git_ps1 '\e[36;1m(%s)\e[31;0m\e[32m '
Теперь экранируем ее и вставляем в PS1 и получаем:
export PS1="\[\e[32;1m\]\u@\h \[\e[31;0m\e[32m\]\w \$(__git_ps1 '\[\e[36;1m\](%s)\[\e[31;0m\e[32m\] ')\[\e[0m\]"
Также у __git_ps1
есть дополнительные опции, включение которых позволяет выводить дополнительную информацию.
Я оставил наиболее полезные из них:
- “*” dirty state
- ”%” untracked files
- ”+” добавленные, но не закомиченные файлы
Для включения этих опций нужно присвоить переменным значения до вычисления PS1.
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_DESCRIBE_STYLE=default
Полный список опций https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
Результат
Мой финальный код в ~/.bashrc
для PS1
выглядит так:
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_DESCRIBE_STYLE=default
export PS1="\[\e[32;1m\]\u \[\e[31;0m\e[32m\]\w \$(__git_ps1 '\[\e[36;1m\](%s)\[\e[31;0m\e[32m\] ')\[\e[0m\]"
Я также убрал @\h
при работе на локальной машине