2011-09-25 2 views
6

터미널의 프롬프트를 색칠하는 동안 성가신 버그를 발견했습니다. 즉터미널에서 색상을 설정하면 이상한 문자 행 제한이 발생합니다.

enter image description here

, 때 내 라인 : 내가 입력 라인의 일부 크기를 얻을 때 휴식

export PS1='\e[1;34m[\e[0;31m\D{%Hh%M} \e[0;32m\u\e[[email protected]\e[0;35m\h\e[0m:\e[0;36m\w\e[1;34m]\e[0m $ ' 

다음 시작

같은 색깔 하나에 내 프롬프트를 설정 한 경우 어떤 한계에 도달하면, 그 자체가 시작됩니다! 다시 같은 줄을 채우면 다음 줄로 가면서 잘 동작합니다.

이 문제를 본 사람이 있습니까? 해결책이 있습니까? 문제는 iTerm에서도 발생합니다.

+1

귀하의 구문은 흉포합니다. 요약하자면, $() 앞에 모든 것을 닫을 수있는 괄호가 없습니다. 다른 문제가 있습니다. 다시 시작하는 것이 좋습니다. 다음은 색상 화에 대한 안내입니다. http://www.ibm.com/developerworks/linux/library/l-tip-prompt/ –

+1

사이드 노트 : 프롬프트를 사용자 정의 할 때 리터럴 달러 기호 대신'\ $ '를 사용하십시오. Bash는 적절한 프롬프트 문자를 표시합니다 (일반 사용자는'$', 루트 사용자는'#'). –

+0

또 다른 스타일 팁 : 하드 코딩 이스케이프 시퀀스를 사용하지 마십시오 (대부분의 사람들이 잘 알고 있지만 그렇게해서는 안됩니다). 대신'tput '을 사용하여 현재 터미널에 적합한 코드를 내 보내어 다양한 터미널에서 적절히 작동하게하십시오. 특히 터미널을 혼동시킬 수있는 문자를 출력하는 대신 터미널이 프롬프트의 색상/스타일을 지원하지 않으면 아무 것도 출력하지 않습니다. 예를 들어'PS1 = "\ [$ (tput setaf 1) \] \ h : \ W \ [$ (tput sgr0) \] \ u \ $" "는 호스트 이름과 작업 디렉토리를 빨간색으로 표시합니다. –

답변

5

이것은 StackOverflow에서 Mac Terminal.app annoying bug - How to fix it?의 복제입니다. 문제는 터미널 제어 문자를 대괄호 \[ … \]으로 묶어야하므로 명령 프롬프트 길이를 계산할 때 bash 쉘이 계산하지 않도록하는 것입니다.

이것은 일반적인 쉘/터미널 질문이며 Mac OS X 또는 터미널과 관련이 없으므로이 질문은 아마도 StackOverflow로 마이그레이션되어 다른 질문을 복제해야합니다. (그러나, 나는 그 중 하나를 할 수있는 특권이 없습니다.)

+3

좋은 답변이지만이 문제를 가진 Apple 사용자가 대답을 얻기 위해 Stackoverflow에 갈 가능성이 적기 때문에 Ask Different로 남겨 두는 것이 좋다고 생각합니다. – conorgriffin

관련 문제