zsh에서 내 프롬프트의 색상을 어떻게 변경할 수 있습니까 (일반 텍스트와 다름)?


121

명령 줄에서 출력의 시작과 끝을 더 잘 인식하기 위해 프롬프트의 색상을 변경하여 프로그램 출력과 눈에 띄게 다르게하고 싶습니다. 내가 zsh를 사용할 때 누군가 나에게 힌트를 줄 수 있습니까?

답변:


58

다음은 빨간색 프롬프트를 설정하는 방법의 예입니다.

PS1=$'\e[0;31m$ \e[0m'

마법은 \e[0;31m(빨간색 전경 \e[0m켜기 )와 (캐릭터 속성 끄기)입니다. 이를 이스케이프 시퀀스라고합니다. 다른 이스케이프 시퀀스는 절대 커서 위치, 색상, 창의 제목 표시 줄 변경 등 다양한 결과를 제공합니다.

이스케이프 시퀀스에 대한 자세한 내용 은 ANSI 이스케이프 코드에 대한 wikipedia 항목을 참조하십시오 .


3
내 .zshrc에서 PROMPT = '[%!]'를 사용하고 있습니다. 어떻게 색칠 할 수 있습니까? 내 .zshrc에서 PROMPT = '\ e [0; 31m [%!] \ e [0m'실행에 실패했습니다.
Léo Léopold Hertz 준영 2009-04-29

3
@ erikb85 : 왜 틀렸다고 말합니까? 더 나은 답변을 위해 제가 할 수있는 일이 있습니까? 저에게 위의 작업을 수행하면 빨간색 달러 기호가 표시되므로 왜 잘못된 것이라고 생각하는지 이해할 수 없습니다.
Bryan Oakley 2013

4
작동하지만 문자열 앞의 $는 zshrc를 결함으로 만듭니다. 표를 사용하면 텍스트가 왼쪽에 표시됩니다. 나는 @Joe에게 사람의 대답 선호
뫼비우스

1
나는 @Moebius 나는 그것이 명확하고 단순 작업이 하나의 원 동의하지만, 완전히 CD에있는 탭을 망쳐 놨
필로 디엑

2
나는 더 나은 답이 있어야합니다 ... zsh을 미친 이상한 ANSI 이스케이프 물건을 필요하지 않았다 생각 ...
찰리 파커 (Charlie Parker)

264

이것을 넣으십시오 ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

지원 색상 :
red, blue, green, cyan, yellow, magenta, black, white(에서 이 대답 ) 다른 컴퓨터는 다른 유효한 옵션이있을 수 있지만.

색상 코드 (및 기타 인쇄 할 수없는 문자)를 %{....%}. 이것은 텍스트 줄 바꿈이 올바르게 작동하기위한 것입니다.

또한, 여기이가에서 디렉토리가 트리밍 작업을 얻을 수있는 방법입니다 여기 .

PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "

3
동의 함, 훨씬 우수한 답변 (
다행히이

3
나를 위해 일하지 않습니다. :(zsh: colors: function definition file not found
balki 2011 년

ZSH4를 사용하고 있습니까? 4.3.11 미만 버전에서는 작동하지 않는다고 생각합니다. 최신 버전이 있다면 올바른 파일을 사용하고 있지 않을 수 있습니다.
조 인격

유효한 색상 값은 무엇입니까?
chakrit

12
%{...%}순서를 인쇄하는 동안 커서가 이동 실 거예요 그래서 내용이 리터럴 이스케이프 시퀀스로 해석된다는 것을 의미합니다. 이것을 사용하지 않으면 색상 코드가 실제로 커서를 이동하여 원하지 않는 효과를 생성 할 수 있습니다. 이것은 zshmisc man 페이지Visual Effects섹션에 문서화되어 있습니다
Bruno Penteado 2013

69

Zsh에는 컬러 프롬프트가 내장되어 있습니다. 시험

autoload -U promptinit && promptinit

그런 다음 prompt -l사용 가능한 프롬프트 를 나열 -p fire하고 "fire"프롬프트를 미리보고 -s fire설정합니다.

프롬프트를 추가 할 준비가되면 위의 자동로드 행 아래에 다음과 같이 추가하십시오.

prompt fade red

모든 테마에 색상을 지정하는 방법이 있습니까? 나는 월터스 프롬프트를 좋아하지만 빨간색으로 표시하고 싶습니다.
Pat Myron

25

autoload -U colors && colors더 이상 필요 하지 않으며 간단하게 할 수 있습니다.

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

FireDude의 답변 과 동일한 결과를 얻으려면 . 자세한 정보는 ZSH 문서 를 참조하십시오.


참고로. 난 그냥 Ubunutu 11.04에서 시도하고 색이없이 나를 위해 작동하지 않았다autoload -U colors && colors
dpc.pw

2
기묘한. OS X 및 Ubuntu 10.04에서 나를 위해 작동합니다.
Andrew Marshall

@Andrew Marshall 예,하지만 더 잘 작동 autoload합니다.
조 인격

@ fireDude67 설정하는 방법 autoload on?
balki 2011 년

1
필요하지 않다면 autoload -U colors배포판이 이미 다른 zsh 초기화 파일에 있음을 의미합니다. 다른 사람들과 공유하려는 스크립트에 여전히 포함시켜야합니다.
kindall

23

사용 가능한 색상 :

for i in {1..256}; do print -P "%F{$i}Color : $i"; done;

                                      


사용 가능한 변수 :

  • %F{118} (1 ~ 256)
  • $FG[018] (1 ~ 256)
  • $fg[magenta] (마젠타, 빨강, 흰색, 노랑, 검정, 파랑, 청록, 녹색)

프롬프트 예 :

PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'

포착

PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} ' 

포착


설치:

변수 정의 (PS1 / PROMPT)를 추가해야합니다. ~/.zshrc

현재 프롬프트에서 PS1 변수를 다시 정의하여 즉시 테스트 할 수도 있습니다 (변경 사항은 저장되지 않음).


15

위의 Bryan Oakley의 답변은 이미 지적 된 바와 같이 결함이 있으며 Andrew Marshall이 제공 한 솔루션은 결함이 없지만 사용 된 색상을 너무 많이 사용자 정의하는 것이 분명하지 않습니다.

macOS Catalina가 지금부터 zsh를 기본 셸로 요청함에 따라 더 많은 사람들이 프롬프트를 사용자 지정하고 싶을 수 있으며 답변을 위해 여기에 올 수 있습니다. 그래서 나는 더 넓은 요약을 제공하고 더 많은 사용자 정의를 허용하는 매우 밀접하게 관련된 다른 개념을 다루려고 노력할 것이라고 생각했습니다.

다양한 색상을위한 3 자리 코드. 우선, 여기에서 다양한 색상에 대한 3 자리 코드를 찾을 수 있습니다 : https://unix.stackexchange.com/a/124409/194343 . 예를 들어, 214는 일종의 주황색입니다.

전경 및 배경. 다른 주요 정보는 F oreground 및 bac K 바탕색에 대해 각각 FK로 원하는 것을 정의 할 수 있다는 것 입니다. 소스는 시각 효과에 대한 zsh 매뉴얼입니다 : http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects

예를 들어 다음 두 명령은

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "

호스트 이름은 검은 색 바탕에 주황색으로 표시하고, 검은 색 바탕에 흰색으로 된 콜론, 검은 색 바탕에 밝은 파란색으로 표시된 현재 작업 디렉토리, 검은 색 바탕에 흰색으로 표시된 달러 기호를 표시합니다.

더 많은 관련 정보는 아래에서 찾을 수 있습니다.

오른쪽에 프롬프트 정보. 예를 들어 타임 스탬프를 추가합니다. https://superuser.com/a/1251045/290299를 참조 하십시오 . 물론, 예를 들어 다음과 같이 밝은 파란색 / 보라색을 띠는 색상으로 색상 코드를 지정할 수 있습니다.

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"

색상에 대한 ls. ls에 대한 설명서를 읽은 후 예를 들어 ls다음 두 명령 을 사용하여 색상을 활성화 할 수 있습니다 .

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

누군가가 포트를 설치하기 위해 마지막으로, 나는 내 구성을 행복으로 테스트되지 않았 음을 마지막 발언으로 또 다른 수단이 될 수 coreutils에서 MacPorts를 다음 사용 gdircolors: 소스 ( https://unix.stackexchange.com/a/174596 / 194343 ). (위의 모든 내용은 일상 생활을 훨씬 더 재미 있고 쉽게 처리 할 수있는 관련 항목이므로 나중에이 마지막 부분을 편집 할 수 있습니다.)


1
이것은 매우 유용한 답변입니다. 함께 해주셔서 감사합니다.
shaunakde

@shaunakde 천만에요! :)
MightyMouse

4

zsh5 (Debian Jessie의 기본값)를 사용하면 모든 솔루션이 작동한다는 것을 알았습니다.

  • $'\e[00m
  • $fg[white]
  • $fg{white}

이제 문제가 있습니다. 커서를 움직여 탭할 때 (자동 완성을 위해)보기 흉한 데칼이 생깁니다. 해결책은 단순히 이스케이프 시퀀스를 %{FOOBAR%}. 이것을 이해하는 데 시간이 걸렸습니다. 2 차 및 3 차 솔루션의 경우로드 colors모듈이 필수입니다. 첫 번째 솔루션을 읽기 쉽게 유지하려면 사용하는 색상에 대한 변수를 정의하십시오.


2

마지막 명령의 종료 상태에 따라 색상이있는 프롬프트를 얻으려면 다음을 사용할 수 있습니다.

PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'

이 줄을 ~/.zshrc.

문서는 가능한 자리를 나열합니다.


이것이 최고의 솔루션입니다. 대단히 감사합니다.
Eddy Ekofo

2

내가 좋아하는 시도 : 넣어

~/.zshrc

이 줄 :

PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'

잊지 마세요

source ~/.zshrc

변경 사항을 테스트하기 위해

물론 색상 / 색상 코드를 변경할 수 있습니다. :-)


0

man zshall 및 PROMPT EXPANSION 검색

여기에서 기존 답변을 읽은 후 몇 가지가 충돌합니다. 나는 zsh 4.2 및 5+를 실행하는 시스템에서 다양한 접근 방식을 시도했으며 이러한 답변이 충돌하는 이유는 그들이 대상으로하는 ZSH 버전을 말하지 않기 때문이라는 것을 발견했습니다. 버전마다 다른 구문을 사용하며 일부는 다양한 자동로드가 필요합니다.

따라서 가장 좋은 방법은 zshall을 사용하고 PROMPT EXPANSION을 검색하여 특정 zsh 설치에 대한 모든 규칙을 찾는 것입니다. 주석에서 "우분투 11.04 또는 10.4 또는 OSX를 사용합니다"와 같은 내용은 사용중인 ZSH 버전이 명확하지 않기 때문에 그다지 의미가 없습니다. Ubuntu 11.04는 ubuntu 10.04보다 최신 버전의 ZSH를 의미하지 않습니다. 이전 버전이 설치된 이유는 여러 가지가있을 수 있습니다. 그 문제에 대해 ZSH의 최신 버전은 ZSH의 버전을 알지 못하고 사용할 구문을 의미하지 않습니다.


0

위의 모든 답변을 보완하기 위해 또 다른 편리한 트릭은 컬러 프롬프트 설정을 zsh 함수에 배치하는 것입니다. 여기에서 로컬 변수를 rc=$reset_color정의하여 더 긴 명령을 별칭으로 지정 하거나 고유 한 색상 변수를 정의 할 수 있습니다. .zshrc파일 에 배치하고 정의한 함수를 호출하는 것을 잊지 마십시오 .

# Coloured prompt
autoload -U colors && colors
function myprompt {
  local rc=$reset_color
  export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.