1

WindowsのGit bashでブランチ名とステータスを表示するために、.bash_promptで次のカラーコード/関数(ポール・アイリッシュからピンチ)を使用しています。

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
}

この関数は情報を適切に表示しますが、2 つの部分に色を付ける代わりに、次のようなカラー コードを出力します。

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

これは、次の (問題を説明するために縮小された) PS1 回線を使用しています。

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

コードがPS1ラインに直接追加された場合、色は正常に機能することに注意してください。

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

私はこの bash のすべてのカスタマイズに慣れているので、明らかにばかげたことをしている可能性があります。

4

1 に答える 1

1

たぶんecho -e。からman echo:

-e enable interpretation of backslash escapes

また、二重引用符内で変数を使用できます。

echo "$WHITE on $PURPLE$branch$dirty"
于 2014-02-10T20:24:59.360 に答える