이 bash 프롬프트에 어떤 문제가 있나요?

이 bash 프롬프트에 어떤 문제가 있나요?

파일 에서 다음 항목을 사용하여 ~/.bashrc프롬프트에 색상을 지정하고 git 저장소의 현재 분기를 표시합니다.

PS1='\[\e[1;32m\]\[\u@\h\]\[\e[m\] \[\w\]\[\e[1;1m\]\[$(__git_ps1 " (%s)")\] \[\e[1;1m\]\[$\] \[\e[m\]'

이것은 bash 기록(위쪽 화살표 키를 여러 번 사용)을 사용할 때 명령줄이 '내어쓰기'(프롬프트의 첫 번째 문자만 그대로 유지됨)되는 것을 제외하고는 거의 잘 작동하며 표시되는 내용은 다음과 같습니다.

usemmand

내 사용자 이름은 user이고 명령은 입니다 command.

답변1

\[\]명령 프롬프트의 일부에서만 사용해야 합니다 .하지 마라실제 텍스트가 있음에도 불구하고 커서를 앞으로 이동합니다. 눈에 보이는 출력이 생성 되면 __git_ps1명령줄의 동기화가 해제됩니다.

답변2

올바른 버전은 다음과 같습니다.

COLOR1="\[\e[1;32m\]"
COLOR2='\[\e[1;1m\]'
COLOR3='\[\e[m\]'
GIT_STATUS=$(__git_ps1 " %s")
PROMPT_CHAR="$"

PROMPT="${COLOR1}\u@\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR} ${COLOR3}"
PS1="$PROMPT"
export PS1

답변3

이 문제를 다루는 사람은 다음과 같습니다. 나에게 도움이 된 예는 다음과 같습니다.

전에:

export PS1="\033[0;33m[\u@\h]\033[1m\e[m \w \033[36m[>>]\033[0m\e[m "

후에:

export PS1='\[\033[0;34m\][\u@\h]\[\033[1m\e[m\] \w \[\033[35m\][>>]\[\033[0m\e[m\] '

'\\[\\]'색상 주변의 모든 것을 메모합니다 .

관련 정보