문제

OS X (10.5.7) 터미널에서 Bash Shell 프롬프트를 깨기 위해 무언가를했습니다.

이것은 내가 구성한 PS1입니다.

PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '

내가 알 수있는 한, 색상 명령이 올바르게 빠져 나옵니다. 그러나 명령 기록에서 위아래로 스크롤하면 역사적 명령이 여러 줄로 감싸면 종종 라인 랩핑 문제가 발생합니다.

나는 내 프롬프트를 다음과 단순화했다.

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '

그리고 나는 여전히 다음과 같은 것을 본다.

로컬 호스트 : ~/라이브러리/애플리케이션 지원/Firefox/Profiles/KNPMXPUP.Defau LT/Extensions/{1A2D0EC4-75F5-4C91-89C4-3656F6E44B68} $ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E                                           export PS1="\[
\e[1;32m\]\h\[\e[0m\]:                                          cd Library/Appl
ication\ Support/

나는 또한 시도했다 \033 대신에 \e. 정보를 위해 PS2를 포함 시켰습니다. 설치 기본값에서 변경하지 않았습니다. 색상 코드를 완전히 제거하면 모든 것이 잘 작동합니까?

도움이 되었습니까?

해결책

Bash의 라인 포장 문제는 새로운 것이 아닙니다. 메일 링거를 참조하십시오. 아마도 이것에 관한 또 다른 버그가있을 것입니다.

인쇄 할 수없는 캐릭터를 태그하는 것보다 훨씬 더 많은 것을 할 수 없으며, 나머지는 프롬프트 코드에 의해 수행되어야합니다.

다른 팁

나는 지금이 PS1을 사용하고 있습니다.

green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "

내 명령 기록을 스크롤하는 것은 지금 라인 랩을 처리하는 것으로 보입니다. 그러나 그 동안이 질문이 요청 된 이후로 나는 또한 내 OS X를 10.6.3으로 업데이트했습니다.

이 stackoverflow 스레드 관련이있는 것 같습니다. 누군가가 그 실에서 언급했듯이 mywiki.wooledge.org의 Bash FAQ Bash 프롬프트에서 색상 코드를 올바르게 인용하는 방법에 대해 논의합니다 (FAQ 53), 그리고 말기 색상의 적절한 호출 (FAQ 37).

당신은 올바르게 탈출하고 밀폐 된 시퀀스를 한 것으로 보입니다.

어쨌든 나는 그것을 사용하여 끝에 ' n'을 추가하기 위해 그것을 사용합니다. 포장 문제의 문제를 더 명확하고 줄입니다. 내 PS1의 정확한 끝은 다음과 같습니다.

'\n\[\033[0;30m\]$\[\033[0m\]

아마 당신이 아는 훌륭한 방법 :

하우 트 프롬프트를 강타하십시오

여기에 내 것이 있습니다 : 그것은 내가 찾은 최고의 제품이지만 원래 발견 한 사이트는 탈출 캐릭터가 없어서 라인 포장 문제로 이어졌습니다. 나는 그것을 땜질하고 마침내 그것을 작동시켰다. 사용자, 경로 및 분기 정보를 색상별로 잘 대비하여 표시합니다.

export PS1='\[\e[1;37m\]\[\e[1;32m\]\u\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]|\[\e[0;39m\]\$'

또한 추가하십시오

GIT_PS1_SHOWDIRTYSTATE=true

분기가 "더러운"경우 마커를 표시하려면 (커밋 될 변경이 존재 함)

export HISTCONTROL=ignoredups

Bash 기록을 스크롤 할 때 중복을 무시하는 데 유용합니다.

bind "set completion-ignore-case on" 

도와줍니다.

마지막으로,

shopt -s checkwinsize

문제가 지속되면 OSX에 도움이 될 수 있습니다.

나는 특별한 캐릭터가 없더라도 프롬프트 커서 포지셔닝에 몇 가지 문제가 있음을 알았습니다. PS1 또는 PROMPT 환경 변수.

끝에 종료 문자가없는 파일을 출력하면. 프롬프트를 혼동합니다.

당신은 다음을 통해 이것을 재현 할 수 있습니다.

curl https://gist.githubusercontent.com/martinos/d4aa0a7d4d752b0d0d9f/raw/3198c39f84a080c44227a084a19fb3a0bb661ee5/wrapping_issue.txt

UP 키를 여러 번 누르면 프롬프트가 혼란스러워지는 것을 알 수 있습니다.

이 작업의 예를 볼 수 있습니다.

https://asciinema.org/a/9mtjhi9dib6md4ocsbw210cca

이런 일이 발생하면 그냥 누르십시오 <CTRL-C> 프롬프트는 정상으로 돌아올 것입니다.

Zshell에는이 문제가 없습니다.

향후 참조를 위해 이것이 내가 사용하는 것입니다.

export PS1="\[\033[0;31m\][\u@Project:\w]$\[\033[0m\] "

이것은 내 쉘 프롬프트가 다음과 같이 표시됩니다.

[ec2-user@Project:~]$

라이브 사이트와 DEV 사이트를 구별하는 데 도움이됩니다.

'Shopt -S Checkwinsize'도 Cygwin 랩 문제에도 효과가 있습니다.

제목 바 트릭을 사용하는 경우 "\e]2;titlebar\a", 그것을 피해야합니다 : "\[\e]2;titlebar\a\]"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top