如何更改终端分支颜色?

如何更改终端分支颜色?

我的终端有如下输出。

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

解释

以下行将检查当前目录是否是git项目

   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.这是获取当前分支名称的更简单方法。
现在,如果上述条件成立,则该函数将检查当前 git 目录的状态。
了解项目中是否有更改的最有效方法是使用git status --porcelain.因此,如果您没有任何更改,则输出git status --porcelain将为空。检查-n "$STATUS"STATUS 的长度是否非零。

如果-n $STATUS为 true,则分支颜色将为红色(因为您进行了更改):echo -e "\033[38;5;1m $branch" #red
如果为 false,则分支颜色将为绿色:echo -e "\033[38;5;34m $branch" #green

你可以检查这个链接有关 bash 颜色和格式的更多信息。也许您的终端不支持某些格式或颜色无法正确打印。

相关内容