이 bash 프롬프트가 이상하게 행동하고 사라지는 이유는 무엇이며 어떻게 고정합니까 (OS X)?

StackOverflow https://stackoverflow.com/questions/706750

  •  22-08-2019
  •  | 
  •  

문제

나는 다소 긴 바람의 강타 프롬프트를 사용한다는 것을 인정합니다.

--(username)-(Wed April 01|12:00:00)--(~ $

최근에, 나는 이전 명령의 종료 값에 따라 성공하면 ()의 내부 요소가 녹색이되고 실패하면 빨간색이 될 수 있도록 밝은 아이디어를 변경했습니다. 대부분의 경우 작동했습니다 (일부 홀수 출구 상태는 색상을 다른 것으로 변경하지만 괜찮습니다). 그러나 하나 이상의 라인 인 명령을 입력하고 터미널이 스크롤하게됩니다. 프롬프트가 사라집니다! 색상이 없을 때 프롬프트가 잘 작동했기 때문에 색상이 빠져 나가는 것과 관련이 있다고 생각합니다.

#.profile
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '

미리 감사드립니다!

도움이 되었습니까?

해결책

처럼 들린다 이것 문제를 해결해야합니다.

이것은 나를 위해 효과가있는 것 같습니다*:

export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ '

* 글쎄요 export PS1='\u@\h:\w\$ ' 나를 위해 일합니다

링크 된 게시물을 인용하기 위해 답은 추가에 있습니다. [ 그리고 PS1 선언의 모든 색상 시퀀스 주변 :

PS1에 대해 다음과 같은 값을 갖기 전에 :

' e [0; 34m h : w [!] $ e [0m'

다음 형식의 멋진 파란색 프롬프트를주었습니다.

호스트 이름 : Working-Directory [Command-number] $

그러나 나는 당신이 한 것과 같은 라인 랩핑 문제가있었습니다. 수정은 ANSI 에스케이프 주위에 [및 ]를 삽입하여 쉘이 라인 랩핑 계산에 포함시키지 않도록하는 것이 었습니다. 이로 인해 PS1에 대한 다음 값이 발생합니다.

' [ e [0; 34m ] h : w [!] $ [ e [m ]'

다른 팁

http://mywiki.wooledge.org/bashfaq/053 - 색상이있는 멋진 프롬프트가 있으며 이제 Bash는 터미널이 얼마나 넓은 지 알지 못하는 것 같습니다. 선이 잘못 감싸고 있습니다.

그런데; 당신의 참조를 위해; 여기 내 PS1 다음과 같이 보입니다.alt text
(원천: lyndir.com)

\[$reset$bold$green\]\u@\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\]

모든 색상 코드를 어떻게 넣는 지 주목하십시오 $parameters 깔끔하게 만들기 위해서는 당신은 사용해야합니다 tput 그들을 생성합니다. 보다:

http://mywiki.wooledge.org/bashfaq/037 - 다양한 색상으로 텍스트를 인쇄하려면 어떻게해야합니까?

공급되는 유틸리티 스크립트에서 색상 매개 변수를 선언합니다. 나의 ~/.bashrc (그리고 내가 쓴 스크립트) bashlib.

마지막 메모에; 당신을 넣으십시오 PS1 정의 ~/.bashrc 그리고하지 마십시오 export 그것. 당신이 당신을 추가 해야하는 이유는 전혀 없습니다. PS1 쉘에서 생성 된 모든 프로세스의 환경에 대한 정의.

탈출 주위에 시작과 끝 괄호가없는 것 같습니다 (첫 번째 ' e'이전과 마지막 'M'이후) :

PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ '

언급했듯이 PS1 var를 내보낼 필요는 없습니다. 쉘만이 볼 필요가 있습니다.

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