문제를 일으키는 새로운 bash 프롬프트

문제를 일으키는 새로운 bash 프롬프트

bash 프롬프트를 다음으로 변경했습니다.

PS1="\[\033[1;31m[\[\033[1;33m\$(date +%H:%M)\[\033[1;31m] \u:\[\033[1;32m\W\[\033[1;37m\$\[\033[0m\] "

주로 색상 때문에 대기열이 길어서 죄송합니다. 기본적으로 Bash 기록으로 돌아가기 위해 위쪽 화살표를 누르면 프롬프트가 사라지고 모든 것이 엉망이 됩니다. 그것은 비슷하다이 문제그러나 a가 누락되었는지, 어디에 있는지는 알 수 없습니다 \[ .

답변1

조금 정리해서 휴대성을 더 높여보겠습니다. 일반적으로 tput생성된 제어 시퀀스를 하드코딩하는 것보다 사용하는 것이 더 좋습니다 .배쉬 FAQ 53. 이렇게 하면 실종자를 찾는 것이 더 쉬워질 것입니다 \].

red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
white=$(tput setaf 7)
reset=$(tput sgr0)
PS1="\[$red\][\[$yellow\]\A\[$red\]] \u:\[$green\]\W\[$white\]\$\[$reset\] "

date귀하의 통화를 동일한 내용(24시간 형식)을 표시하는 내장된 프롬프트 이스케이프 기능으로 대체했습니다 .\AHH:MM

연결된 Bash FAQ에 명시된 대로 이 접근 방식에는 주의할 사항이 있습니다. 제어 tput시퀀스 출력에 탈출을 요청하는 내용이 포함되어 있으면 출력이 왜곡됩니다. 저는 이런 문제를 겪어본 적이 없어서 보통 무시합니다.

답변2

\[당신과 불균형 \]. bash가 터미널에서 실제로 공간을 차지하지 않는다는 것을 알 수 있도록 제어 시퀀스를 포함해야 합니다.

이 시도:

PS1="\[\033[1;31m\][\[\033[1;33m\]\$(date +%H:%M)\[\033[1;31m\]] \u:\[\033[1;32m\]\W\[\033[1;37m\]\$\[\033[0m\] "

@jw013의 솔루션하지만 더 깨끗해서 더 좋아요.

답변3

이것ASCII 테이블색상, 볼드체, 이탤릭체 등에 대한 참조가 있습니다.

관련 정보