Bash는 사용자 정의 PS1 프롬프트를 사용할 때 첫 번째 줄을 덮어씁니다.

Bash는 사용자 정의 PS1 프롬프트를 사용할 때 첫 번째 줄을 덮어씁니다.

내 문제는 비슷하지만 다릅니다.이 문제.

.bashrc아래와 같이 사용자 정의 PS1을 만들었습니다 .

STARTCOLOR='\e[0;36m';
ENDCOLOR="\e[0m"
export PS1="\n$STARTCOLOR\u@\h:\! <\t> \w\n\$ $ENDCOLOR"

다음과 같습니다(물론 색상 포함).

tony@home:515 <17:04:52> ~/IdeaProjects/SomeProject
$ gedit ~/.bashrc

내 프로젝트를 원격 Git 저장소에 연결할 때 처음으로 이 문제를 발견했습니다. 나는 다음을 기대합니다 (물론 실제 저장소는 아닙니다).

$ git remote add origin https://[email protected]/tony/someproject.git

그러나 이것을 얻었습니다(내 PS1의 일부에도 적용됩니다):

project.gitte add origin https://[email protected]/tony/some

이렇게 시각적으로 이상하더라도 명령은 여전히 ​​작동합니다.

너무 길어요.내 명령이 한 줄보다 길면 두 번째 줄이 첫 번째 줄을 덮어씁니다. 어떤 아이디어가 있나요?

답변1

\[\](링크한 질문에 대한 답변에서 언급한 대로) 에 색상 이스케이프 시퀀스를 포함하여 인쇄할 수 없는 문자로 표시합니다.
이렇게 하면 bash새 줄로 이동해야 하는 문자 수를 계산한 후 프롬프트 길이에 포함되지 않습니다.

STARTCOLOR='\e[0;36m'
ENDCOLOR="\e[0m"
export PS1="\n\[$STARTCOLOR\]\u@\h:\! <\t> \w\n\$ \[$ENDCOLOR\]"

관련 정보