Динамические элементы в bash PS1

Я поместил следующее в мой файл ~ / .localsh, чтобы настроить приглашение bash при работе с git.

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

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

Это было раньше, когда вы не заканчивали последовательность цветов с помощью [\ e [0m]. Теперь это происходит со мной из-за вызова функции getgitbranch. Я думаю, что это как-то связано с тем, что терминал не знает, как долго это приглашение.

Итак, вот вопрос ... Как правильно использовать динамические элементы в моем приглашении bash и не закрывать их, когда я использую стрелки вверх?

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}
5
задан eric.frederich 25 August 2010 в 15:44
поделиться