Приглашение Windows Git bash не отображает цвета из функции

Я использую следующие цветовые коды / функции (унаследованные от Пола Айриша) в моем.bash_prompt, чтобы отображать название ветки и статус в Git bash на окнах.

MAGENTA="\033[1;31m"
ORANGE="\033[1;33m"
GREEN="\033[1;32m"
PURPLE="\033[1;35m"
WHITE="\033[1;37m"
BOLD=""
RESET="\033[m"

function git_info() {

        # check if we're in a git repo
        git rev-parse --is-inside-work-tree &>/dev/null || return

        # quickest check for what branch we're on
        branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||')

        # check if it's dirty (via github.com/sindresorhus/pure)
        dirty=$(git diff --quiet --ignore-submodules HEAD &>/dev/null; [ $? -eq 1 ]&& echo -e "*")

        echo $WHITE" on "$PURPLE$branch$dirty
}

Функция отображает информацию правильно, но вместо того, чтобы раскрасить две части, она печатает цветовые коды следующим образом:

\[\033[1;37m\] on \[\033[1;35m\]working*
$

Для этого используется следующая (уменьшенная для иллюстрации проблемы) линия PS1:

PS1="\$(git_info)\n$ "

Следует отметить, что цвета работают нормально, если коды добавляются непосредственно в строку PS1, т.е.

PS1="\[$PURPLE\]\w\n$ \[$RESET\]"

Я чувствую, как справляюсь со всей этой кастомизацией, так что могу делать что-то явно глупое!

1 ответ

Может быть echo -e, От man echo:

-e enable interpretation of backslash escapes

Также вы можете использовать переменные внутри двойных кавычек:

echo "$WHITE on $PURPLE$branch$dirty"
Другие вопросы по тегам