bash의 PS1에서 사용자 이름의 특정 문자 색상 변경


9

PS1에서 bash로 표시되는 사용자 이름의 특정 문자 색상을 변경하고 싶습니다.

예 : 나의 경우 \u입니다 rahul, 내가 편지를 싶습니다 h블루 컬러로 흰색으로 휴식을.

나는 \u사용자 이름 을 참조하고 전체 '엔티티'에 색상을 추가하는 것은 다음과 같은 태그를 추가하여 수행 된다는 것을 알고 [\033[38;5;15m\]있습니다.

가능하다면 어떻게하는지 알려주세요.

답변:


13

\u이스케이프를 사용하지 않으 려면 다음과 같이하십시오.

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

프롬프트가 사용자 이름과 공백으로 설정됩니다. 사용자 이름의 첫 문자는 빨간색입니다. $USER특정 범위 에서 변수를 두 번 확장하여 작동 합니다. 첫 번째 범위는 0에서 1까지입니다. 두 번째는 1 (두 번째 문자)에서 끝까지입니다.

요청한 프롬프트를 얻으려면 다음을 사용하십시오.

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "

1
길이 를 생략 하여 첫 번째 문자를 제외한 전체 사용자 이름에 대해 offset :으로 시작하는 전체 문자열을 인쇄 할 수 있습니다 ${USER:1}. 좋은 해결책! OP가 요청한대로 세 번째 문자의 색상을 변경하는 방법을 보여줄 수 있습니까?
디저트

1
하나와 그런 일을 테스트 할 수 있습니다 echo -e, 예를 들면echo -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
디저트

2
이것은 다양한 다른 사용자 이름으로 작동해야합니까 (예 : 모든 사람의 세 번째 글자를 강조 표시) 당신을 위해 단지 경우, 단순한 접근 방식은 예를 들어 사용자 이름의 문자를 하드 코드 그냥 ra대신 ${USER:0:2}
에그몬트

@egmont 하드 코딩은 거의 최선의 방법은 아니지만, 종종 훨씬 간단합니다. 이렇게하면 전역 구성 파일에 코드를 삭제하거나 다른 사람과 공유 할 수 있습니다. 계정 이름이 바뀐 경우를 처리합니다.
Sebastian Stark

1
개인적으로 나는 서로 다른 이름의 3 개의 계정간에 고유 한 셸 구성을 공유합니다. 그러나 아마도 우리는 여기서 철학에 들어가서는 안됩니다 :)
Sebastian Stark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.