나는 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"
효율적인. 답변해주셔서 감사합니다