명령줄 프롬프트에서 호스트 이름 색상화

명령줄 프롬프트에서 호스트 이름 색상화

bash에서 명령줄 프롬프트의 호스트 이름 부분에 사용자 정의 색상을 설정하고 싶습니다.

.bashrc파일에서 기본 명령줄 프롬프트는 다음과 같습니다.

PS1='[\u@\h \W]\$ '

호스트 이름만 색상화하기 위해 다음 팁을 생각해 냈습니다.

PS1='[\u@\e[40;36m\h\e[0m \W]\$ '

나는 작업하는 호스트마다 다른 색상을 사용합니다. 음영 부분은 예상대로 작동하는 것 같습니다. 그러나 위의 프롬프트가 나타난 후에는 명령줄 탐색이 제대로 작동하지 않습니다. 예를 들어 커서를 줄의 시작이나 끝으로 이동할 수 없는 경우가 있습니다. 기본 프롬프트로 다시 전환하면 모든 것이 다시 잘 작동합니다.

내 컬러 팁에 문제가 있나요? 호스트 이름에만 색상을 올바르게 할당하려면 어떻게 해야 합니까?

이 질문은 중요하지 않습니다. 하지만 저는 Arch Linux KDE를 실행하고 Konsole에서 작업하고 있습니다.

답변1

배경

특수 프롬프트 순서가 확장된 후 프롬프트의 나머지 각 문자를 계산하여 프롬프트 길이를 계산합니다.

질문

색상 순서(실제로 프롬프트 길이에 포함되지 않음)를 추가했으므로 bash이제 프롬프트가 실제보다 더 긴 것으로 간주됩니다.
따라서 bash선이 어디에서 시작되고 끝나는지 알 수 있는 방법이 없어 앞서 언급한 기능 장애가 발생합니다.

해결책

bash매뉴얼 에서 :

\[    Begin a sequence of non-printing characters, which could be used to 
      embed a terminal control sequence into the prompt

\]    End a sequence of non-printing characters

색상 이스케이프 시퀀스 주위에 추가하면 프롬프트 길이에 포함되지 않습니다.

관련 정보