터미널 분기 색상을 변경하는 방법은 무엇입니까?

터미널 분기 색상을 변경하는 방법은 무엇입니까?

내 터미널에는 다음과 같은 출력이 있습니다.

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의 길이가 0이 아닌지 확인하십시오 .

true 인 경우 -n $STATUS분기 색상은 빨간색이 됩니다(변경했기 때문에) echo -e "\033[38;5;1m $branch" #red.
false인 경우 분기 색상은 녹색이 됩니다 echo -e "\033[38;5;34m $branch" #green.

당신은 확인할 수 있습니다이 링크Bash 색상 및 형식에 대한 추가 정보. 터미널이 일부 형식을 지원하지 않거나 색상이 올바르게 인쇄되지 않을 수 있습니다.

관련 정보