zsh에서 사용자 또는 루트에 따라 프롬프트 색상 변경


13

zsh을에 당신이있을 수 있습니다 %#귀하의 PS1(또는 어떤 PROMPT변수) 기본적으로 디스플레이를 의미 %하는 경우 사용자 나 디스플레이 #의 경우 루트. 있도록이에 영향을 미칠 수있는 방법이 있는지 궁금 하군요 %또는 #그 사용자 또는 루트 (사용자에 대한 파란색, 루트 빨간색) 확실한 방법은 바로 변경하는 것입니다 여부에 따라 색상을 변경 PS1내 루트의 ~/.zshrc만 고려 이것은 이미 PS1두 가지 모두에 똑같이 사용할 수있는 방법이 없을지 궁금해하는 특별한 상징입니다 ... %#zsh와 같은 특정 기능 (나는 내가 할 수있는 다른 해킹이 있다고 확신한다) if then 문).

답변:


8

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

해야 호스트 이름 (변경 작업 %m루트 경우) (빨간색) 다른 색상을. 테스트 할 zsh 셸이 없지만 올바르게 보입니다.

이유는 다음과 같습니다.

%(x.true.false):: 삼항의 첫 번째 항의 평가에 따라 올바른 진술을 실행하십시오. '!' 쉘에 권한이 있으면 참입니다. 실제로 %#바로 가기입니다 %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%}::는 %{\e[X;Ym%}X를 서식 (굵게, 밑줄 등)으로, Y를 색상 코드로 사용하는 색상 이스케이프 시퀀스입니다. 색상을 변경하려는 용어 주위의 시퀀스를 열고 닫으십시오. 그렇지 않으면 해당 지점 이후의 모든 색상이 무엇이든됩니다. %m명확성을 위해 프롬프트 용어 주위에 공백을 추가했습니다 .

http://www.nparikh.org/unix/prompt.php 에는 색상 표 및 zsh에 사용 가능한 기타 옵션에 대한 추가 옵션 및 세부 사항이 있습니다.


6
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#쉘이 루트로 실행 중인지 테스트합니다. 이것을 변경 %(!하여 쉘이 상승 된 권한으로 실행되는지 테스트합니다 (이것은 newgrp루트로 로그인하지는 않음).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.