터미널의 bash 프롬프트를 zsh로 변환

터미널의 bash 프롬프트를 zsh로 변환

최근에 zsh를 사용하도록 터미널을 업데이트했는데, 그렇게 한 후 이제 새 터미널 창에 \[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]이전에 설정한 사용자 정의 프롬프트 대신 다음과 같은 프롬프트가 표시됩니다.

bash 구성 파일을 업데이트하여 터미널에 사용자 정의 프롬프트를 다시 표시하거나 zsh 기반 구성 파일을 사용하여 원하는 장치 이름, 경로 등을 표시하도록 기본 터미널 프롬프트를 정리하는 방법에 대한 제안 사항이 있습니까?

답변1

프롬프트 이스케이프 시퀀스가 ​​다릅니다.세게 때리다그리고다루기 힘든. 기능은 비슷하지만 구문은 완전히 다릅니다. Bash 설정을 zsh 구문으로 변환해야 합니다.

PS1두 경우 모두 프롬프트가 변수로 이동합니다. (다른 가능성도 있지만 꼭 사용할 필요는 없습니다.) 를 입력하도록 설정합니다 .zshrc. 따라서 다음과 같은 줄을 추가해야 합니다 .zshrc.

PS1=$'%{\e[1;92m%}%m:…'

번역을 시작했습니다. bash의 \[…\]너비가 0인 구조는 zsh의 구조가 되었고, %{…%}bash에 표시된 이스케이프 문자는 zsh에 있었고, 호스트 이름은 bash와 zsh에 모두 있었습니다...\033$'\e'\h%m

답변2

\e[92m16개 이상의 ANSI 색상을 지원하는 터미널에서 전경색을 색상 10(밝은 녹색)으로 설정하는 시퀀스입니다. 이는 echoti setaf 10해당 터미널을 참조할 때 (terminfo) 또는 (termcap)(또한 또는 시스템에 따라)에 의해 전송되는 시퀀스입니다.echotc AF 10tput setaf 10tput AF 10$TERM

\e[1m용감한.

zsh급속한 확장 속에서 ,

  • %B돌아서 다용감한켜고, %b끄세요.
  • %10F%F{#00ff00}RGB 사양( zmodload zsh/nearcolor지원하는 터미널의 경우 팔레트에서 가장 가까운 색상을 가져오는 데 사용할 수 있음) 의 경우 전경색을 10으로 설정하고 지원하지 않는 터미널의 경우 %f기본 전경색으로 재설정합니다. %F{blue}기본 8가지 하위 색상( \e[3xm)과 함께 작동합니다.
  • \h, 에 해당하는 bash는 tcsh와 마찬가지로 , , \W여야 \u합니다 %m.%~%n

따라서 bash와 동일합니다.

\[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]

다음과 같아야 합니다.

%10F%B%m: %b%4F[%~] %1F%n$ %f

답변3

혼란스러운 백슬래시를 너무 많이 사용하지 않고 프롬프트를 설정하는 더 쉬운 방법은 명령을 Zsh사용하는 것입니다 . tput예를 들어 프롬프트 문자열을 굵게 설정하고 전경색을 노란색으로 설정하는 방법은 다음과 같습니다.

promptText="megh$ "
PS1="%{$(tput bold)$(tput setaf 3)%}$promptText%{$(tput sgr0)%}"

인쇄할 수 없는 문자를 이스케이프하려면 해당 문자를 %{ ... %}Zsh에 넣어야 합니다. Bash의 경우 내부에 넣거나 \[ ... \]대신 넣으세요 \001 ... \002.

추가 설명여기

관련 정보