![ターミナルブランチの色を変更するには?](https://linux33.com/image/211828/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%AE%E8%89%B2%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F.png)
私の端末には次の出力があります。
pc@pop-os:~/my-project (main)$
プロジェクトはGitHub経由でダウンロードされます。(main)
色は緑です。プロジェクトディレクトリに移動したときに端末に表示されるブランチ名に設定しました。変更すると、端末に変更を認識して色を(main)
赤に変更するようにしたいと思います。誰でも助けることができますか?
答え1
私はこのparseGitBranch
機能を使って色を定義します。関数は次のようにする必要があります。
parseGitBranch () {
if ! git rev-parse --git-dir &> /dev/null; then
return
fi
branch="($(git branch --show-current))"
local STATUS
STATUS=$(git status --porcelain)
if [ -n "$STATUS" ]; then
echo -e "\033[38;5;1m $branch" #red
else
echo -e "\033[38;5;34m $branch" #green
fi
}
そして、次のように設定する必要がありますPS1
。
PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\$(parseGitBranch) \[\033[00m\]\$\n>"
上記のコードは内部にあります~/.bashrc
。
説明する
次の行は、現在のディレクトリが次のようになっていることを確認します。子プロジェクト:
if ! git rev-parse --git-dir &> /dev/null; then
return
fi
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
コードをに変更しましたgit branch --show-current
。これは現在のポイント名を取得するより簡単な方法です。
上記の条件がtrueの場合、関数は現在のgitディレクトリの状態を確認します。
プロジェクトに変更があるかどうかを確認する最も効率的な方法はを使用することですgit status --porcelain
。したがって、変更がなければ、出力は空にgit status --porcelain
なります。-n "$STATUS"
STATUSの長さがゼロでないことを確認してください。
trueの場合、-n $STATUS
分岐色は赤になります(変更したため)echo -e "\033[38;5;1m $branch" #red
。
falseの場合、分岐色は緑色になりますecho -e "\033[38;5;34m $branch" #green
。
確認できますこのリンクBashの色とフォーマットに関する追加情報。端末が一部のフォーマットをサポートしていないか、色が正しく印刷されない可能性があります。