이 프롬프트는 터미널이 화면 중간을 감싸도록 만듭니다. 이유는 무엇입니까?

이 프롬프트는 터미널이 화면 중간을 감싸도록 만듭니다. 이유는 무엇입니까?

다음과 같은 PS1 프롬프트가 있습니다.

export PS1="\e[1m\e[38;5;198m\u\e[0m @ \e[1m\e[38;5;208m\h\e[0m : \e[1m\w\e[0m\e[38;5;226m\$(parse_git_branch)\e[0m \e[1m>>>\e[0m "

무슨 일이 일어나는지 입력하고 터미널을 통해 중간에 도달하면 줄의 시작 부분에 커서를 보내고 다음과 같이 자신을 덮어씁니다.

rossid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>

oussid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>  this is just a test to show what happens nothing seri 

(나머지 진지한 문자열이 시작 부분을 대체합니다)

왜 그런지 아시나요? (저는 osx 표준 터미널과 IntelliJ 터미널을 사용하고 있습니다. 모두 동일합니다.)

답변1

\[와 사이에 인쇄할 수 없는 모든 이스케이프 시퀀스를 묶어야 합니다 \]. 예를 들어:

  PS1="\[\e[1m\]\[\e[38;5;198m\]\u\[\e[0m\] @ "

[프롬프트의 일부만 표시합니다. 휴식할 때도 마찬가지입니다.]

관련 정보