Bash PS1 사용자 지정 프롬프트에서 긴 줄이 겹칩니다.


13

PS1서버 이름, 시간, 사용자 이름 및 기타 유용한 변수 로 멋진 2 줄 bash 프롬프트를 구성했습니다 .

PS1="\n\[\033[1;34m\]\342\226\210\342\226\210 \u @ $SERVER_NAME""$BBlue"" \w""$Color_Off  \n\[\033[0;36m\]\342\226\210\342\226\210 \d \t $ \[\033[0;39m\]"

여기에 이미지 설명을 입력하십시오

전체 Github 소스는 여기에 있습니다 .

문제는 긴 줄이 종종 자신을 감싸서 새 줄이 이전 줄과 겹쳐진다는 것입니다.

문제는 일관성이 없습니다. 일부 줄은 올바르게 줄 바꿈되고 일부 줄은 줄 바꿈되지 않습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

답변:


16

bash 프롬프트 용 멋진 2 줄 PS1이 있습니다.

PS1

\[\e[1;32m\]\H\[\e[0m\] :: \[\e[1;30m\]\d\[\e[0m\] \@ :: \[\e[1;33m\]\w\n\[\e[1;34m\]\u $ \[\033[0m\]

여기 내가 한 일이 있습니다. 이것이 내 색이라면 :

\e[1;32m

나는 그것을 다음과 같이 바꿨다.

\[\e[1;32m\]

기본적으로 다음과 같이 묶어야합니다.

\[$mycolor\]

답변을 확인하십시오 .


+1 감사합니다. 이상하게도 Mac에서는 작동하지 않는 것 같습니다.
Adam Matan

당신은 생명의 은인입니다! mac의 경우 Adam .. 열 수 때문일 가능성이 큽니다. 프롬프트를 'this is my prompt :'와 같은 문자열로 설정하고 문제가 지속되는지 확인하십시오. 그렇다면 터미널의 열 설정이 너무 넓거나 좁습니다.
Alex Summers

7

이 솔루션을 온라인에서 찾았 으며 색상 변수에 대한 닫는 괄호를 제안했습니다.

이것을 변경하십시오 :

Black='\e[0;30m'        # Black
Red='\e[0;31m'          # Red
Green='\e[0;32m'        # Green

에:

Black='\e[0;30m\]'        # Black
Red='\e[0;31m\]'          # Red
Green='\e[0;32m\]'        # Green

나는 한 변화를 저지른 - 예상대로 작동 바랍니다.


1
이것이 무엇을 달성 해야하는지 잘 모르겠습니다. 에 공간을 차지하지 않는 모든 것을 감싸 야 \[ \]하므로 (an-escapes) 가 없으면 an-escape 색상을 모두 끝낼 수 \]는 없습니다 \[. 인쇄 할 수없는 문자를 넣을 때는 해당 문자를 포장해야합니다 \[ \](예 :) PS1='\[\e[32;1m\] green prompt \[\e[0m\] $'.
dylnmc

과연! \\를 열지 않으면 Linux 사용자에게 프롬프트가 표시됩니다. OSX와 다를 수 있습니까? 얼마나 이상합니다. \ [와 \ e [는 리눅스에서 서로 다른 두 가지로 해석됩니다. 첫 번째는 다음 순서를 인쇄 할 수 없으며 프롬프트의 표시된 문자의 일부로 계산하지 않음을 나타냅니다. \ e [는 ANSI 색 구성표를 시작하기위한 이스케이프 괄호입니다.
Alex Summers

0

bash PS1에서 긴 줄이 겹치는 문제에 대한 내가 선호하는 해결책 \n은 PS1 프롬프트 줄의 끝에있는 것입니다.

예 :

여기에 이미지 설명을 입력하십시오

시간, 사용자, 호스트, 디렉토리 및 자식 분기 (!)를 모두 원한다면 이것을 사용할 수 있습니다 (mac 또는 linux).

/unix//a/124012/10043


자식 분기에는을 사용해야합니다 if [[ $(git rev-parse --is-inside-git-dir 2> /dev/null) ]]; then branch="$( git symbolic-ref --short -q HEAD 2> /dev/null )"; fi. 이것은 git을 스크립트에 넣고 이전에 읽은 내용에서 분기 이름을 평가할 때의 표준입니다.
dylnmc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.