Bash 프롬프트의 추가 문자

Bash 프롬프트의 추가 문자

나는 bash 프롬프트를 사용자 정의하려고 노력해 왔습니다.

아래는 내 구성입니다

#!bin/bash
Nocolor="\[\033[0m\]"       # Text Reset

# Bold High Intensty
BIBlack="\[\033[1;90m\]"      # Black
BIRed="\[\033[1;91m\]"        # Red
BIGreen="\[\033[1;92m\]"      # Green
BIYellow="\[\033[1;93m\]"     # Yellow
BIBlue="\[\033[1;94m\]"       # Blue
BIPurple="\[\033[1;95m\]"     # Purple
BICyan="\[\033[1;96m\]"       # Cyan
BIWhite="\[\033[1;97m\]"      # White

function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ $git_status =~ "Changes not staged for commit" ]]; then
    echo -e $BIRed
  elif [[ $git_status =~ "Changes to be committed" ]]; then
    echo -e $BIYellow
  else
    echo -e $BIGreen
  fi  
}

PS1="\u\[$BIRed\]\W"
PS1+="\$(git_color) $ " 
PS1+="\[$Nocolor\]"

export PS1

내가 하고 싶은 것은 내 자식 상태에 따라 특정 색상으로 $ 기호를 강조 표시하는 것입니다.

이 후 내 프롬프트는 다음과 같습니다 여기에 이미지 설명을 입력하세요.

이건 어디서 만들어졌나요?\[\]에서. git_status 메소드를 호출하기 위해 가능한 모든 방법을 시도했지만 아무것도 작동하지 않았습니다.

내 버전의 Bash

bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

돕다. 미리 감사드립니다.

답변1

\[또는 PS1에 직접 포함 하지 마십시오. \]따라서 확장된 내용과 설명된 내용을 추적할 필요가 없습니다.

Nocolor="\033[0m"       # Text Reset

# Bold High Intensty
BIBlack="\033[1;90m"      # Black
BIRed="\033[1;91m"        # Red
BIGreen="\033[1;92m"      # Green
BIYellow="\033[1;93m"     # Yellow
BIBlue="\033[1;94m"       # Blue
BIPurple="\033[1;95m"     # Purple
BICyan="\033[1;96m"       # Cyan
BIWhite="\033[1;97m"      # White

function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ $git_status =~ "Changes not staged for commit" ]]; then
    echo -ne "$BIRed"
  elif [[ $git_status =~ "Changes to be committed" ]]; then
    echo -ne "$BIYellow"
  else
    echo -ne "$BIGreen"
  fi  
}

PS1="\u\[$BIRed\]\W"
PS1+="\[\$(git_color)\] $ " 
PS1+="\[$Nocolor\]"

-n에코 도 추가했지만 별 차이가 없어야 합니다.

답변2

누군가 색상 코드를 제거하는 답변을 게시했습니다 \[\]. 나중에 그/그녀는 답변을 삭제했습니다. 제안해주셔서 감사합니다. 작동됩니다.

나는 "\[\033[0m\]"로 바뀌었다"\033[0m"

효율적인. 답변해주셔서 감사합니다

관련 정보