답변:
다음은 빨간색 프롬프트를 설정하는 방법의 예입니다.
PS1=$'\e[0;31m$ \e[0m'
마법은 \e[0;31m
(빨간색 전경 \e[0m
켜기 )와 (캐릭터 속성 끄기)입니다. 이를 이스케이프 시퀀스라고합니다. 다른 이스케이프 시퀀스는 절대 커서 위치, 색상, 창의 제목 표시 줄 변경 등 다양한 결과를 제공합니다.
이스케이프 시퀀스에 대한 자세한 내용 은 ANSI 이스케이프 코드에 대한 wikipedia 항목을 참조하십시오 .
이것을 넣으십시오 ~/.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%}%% "
zsh: colors: function definition file not found
%{...%}
순서를 인쇄하는 동안 커서가 이동 실 거예요 그래서 내용이 리터럴 이스케이프 시퀀스로 해석된다는 것을 의미합니다. 이것을 사용하지 않으면 색상 코드가 실제로 커서를 이동하여 원하지 않는 효과를 생성 할 수 있습니다. 이것은 zshmisc man 페이지 의 Visual Effects
섹션에 문서화되어 있습니다
autoload -U colors && colors
더 이상 필요 하지 않으며 간단하게 할 수 있습니다.
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
FireDude의 답변 과 동일한 결과를 얻으려면 . 자세한 정보는 ZSH 문서 를 참조하십시오.
autoload -U colors && colors
autoload
합니다.
autoload on
?
autoload -U colors
배포판이 이미 다른 zsh 초기화 파일에 있음을 의미합니다. 다른 사람들과 공유하려는 스크립트에 여전히 포함시켜야합니다.
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 변수를 다시 정의하여 즉시 테스트 할 수도 있습니다 (변경 사항은 저장되지 않음).
위의 Bryan Oakley의 답변은 이미 지적 된 바와 같이 결함이 있으며 Andrew Marshall이 제공 한 솔루션은 결함이 없지만 사용 된 색상을 너무 많이 사용자 정의하는 것이 분명하지 않습니다.
macOS Catalina가 지금부터 zsh를 기본 셸로 요청함에 따라 더 많은 사람들이 프롬프트를 사용자 지정하고 싶을 수 있으며 답변을 위해 여기에 올 수 있습니다. 그래서 나는 더 넓은 요약을 제공하고 더 많은 사용자 정의를 허용하는 매우 밀접하게 관련된 다른 개념을 다루려고 노력할 것이라고 생각했습니다.
다양한 색상을위한 3 자리 코드. 우선, 여기에서 다양한 색상에 대한 3 자리 코드를 찾을 수 있습니다 : https://unix.stackexchange.com/a/124409/194343 . 예를 들어, 214는 일종의 주황색입니다.
전경 및 배경. 다른 주요 정보는 F oreground 및 bac K 바탕색에 대해 각각 F 및 K로 원하는 것을 정의 할 수 있다는 것 입니다. 소스는 시각 효과에 대한 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 ). (위의 모든 내용은 일상 생활을 훨씬 더 재미 있고 쉽게 처리 할 수있는 관련 항목이므로 나중에이 마지막 부분을 편집 할 수 있습니다.)
zsh5 (Debian Jessie의 기본값)를 사용하면 모든 솔루션이 작동한다는 것을 알았습니다.
$'\e[00m
$fg[white]
$fg{white}
이제 문제가 있습니다. 커서를 움직여 탭할 때 (자동 완성을 위해)보기 흉한 데칼이 생깁니다. 해결책은 단순히 이스케이프 시퀀스를 %{FOOBAR%}
. 이것을 이해하는 데 시간이 걸렸습니다. 2 차 및 3 차 솔루션의 경우로드 colors
모듈이 필수입니다. 첫 번째 솔루션을 읽기 쉽게 유지하려면 사용하는 색상에 대한 변수를 정의하십시오.
마지막 명령의 종료 상태에 따라 색상이있는 프롬프트를 얻으려면 다음을 사용할 수 있습니다.
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
이 줄을 ~/.zshrc
.
문서는 가능한 자리를 나열합니다.
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의 버전을 알지 못하고 사용할 구문을 의미하지 않습니다.
위의 모든 답변을 보완하기 위해 또 다른 편리한 트릭은 컬러 프롬프트 설정을 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