동작을 설명하기는 어렵지만 짧은 클립이 있습니다.
http://www.youtube.com/watch?v=9KqHBA94FPI
기본적으로 여러 줄 명령을 입력하면 첫 번째 줄의 끝에서 삽입 블록이 첫 번째 줄의 시작으로 돌아가고 첫 번째 줄을 쓴 다음 두 번째, 세 번째 등의 줄에서 정상적으로 계속됩니다. . 삭제할 때 전체 명령과 명령 위의 빈 공간을 삭제할 수 있습니다 (user @ host / Directory 정보가 포함 된 행 뒤에 명령이 삽입되도록 설정했습니다. 위에서 설명한 디렉토리와 호스트의 마지막 부분입니다. 설명이 끔찍해서 죄송합니다. 비디오가 더 잘 작동합니다.
내 .bash_profile의 내용은 다음과 같습니다.
export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "
답변
비 인쇄 문자 (이 경우 ANSI 이스케이프 시퀀스)를 bash 이스케이프 시퀀스 : \[
및로 둘러싸 야합니다 \]
. 그렇게하면 배쉬는 동봉 된 문자가 보이지 않는다는 것을 알 수 있습니다. 그들은 공간을 차지하지 않습니다. 그것들은 줄 바꿈에 의해 사용 된 단어 길이 계산에 포함되어서는 안됩니다.
다시 말해 PS1
정의를 바꾸십시오 :
export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "
…
export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "
그리고 여기 PS1
에는 사람이 읽을 수있는 가독성이 향상된 동일한 값이 있습니다 (하단 행의 ANSI 이스케이프, 중간 행의 bash 이스케이프 및 위쪽 행의 문자 인쇄).
\u @ \h \w\n \$
\[ \] \[ \] \[ \] \[ \] \[ \]
\e[31m \e[0m \e[34m \e[33m \e[0m
더 읽을 거리 :
답변
나는 모두
비슷한 문제가 있었고 PS1 변수를 원래 변수에서 매우 간단한 변수로 변경하여 해결책을 찾았습니다. 내 이름은 실제로입니다 : export PS1 = Alex
이제 내 터미널에는 더 이상 이상한 동작이 없습니다.
도움이 되길 바랍니다.
Alex (Mac Lion 10.8)