다음과 같은 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\] @ "
[프롬프트의 일부만 표시합니다. 휴식할 때도 마찬가지입니다.]