현재 디렉토리의 처음 2글자만 표시하도록 zsh 프롬프트를 구성하십시오.

현재 디렉토리의 처음 2글자만 표시하도록 zsh 프롬프트를 구성하십시오.

현재 디렉토리의 처음 두 글자만 표시하고 싶습니다.

나는 노력했다

PROMPT="%1d %# "

현재 디렉토리 를 directory1.zsh

프롬프트 가 di아닌 처음 두 문자만 얻으려면 어떻게 해야 합니까 ?directory1zsh

답변1

%2>...>자르기 연산자를 사용하여 자르기 %1~(현재 작업 디렉토리의 마지막 표현 )를 사용할 수 있습니다. ~또는 %1d물결표 표현이 필요하지 않은 경우:

$ PROMPT='before %2>>%1~%>> after%# '
before ~ after% cd /usr/local
before lo after% cd ~sys
before ~s after%

또는 일부 잘림이 있음을 나타냅니다.

$ PROMPT='before %3>✀>%1d%>> after%# '
before ch✀ after% cd /usr/local
before lo✀ after% cd /
before / after%

답변2

이 시도:

setopt promptsubst
PROMPT='${${(%):-%1d}[1,2]}%#'

zsh이것은 처음에는 읽기가 약간 어려울 수 있는 중첩된 확장 세트입니다 . 일부 작품:

  • setopt promptsubst- 이 기능이 활성화되면 프롬프트의 s가 zsh확장됩니다 .${..}
  • PROMPT='...'- 프롬프트를 설정합니다. 작은따옴표는 중요합니다. ${...}나중에 확장을 평가 하고 싶지 않습니다 .
  • %#- #루트인 경우, %그렇지 않은 경우.
  • ${:-...}%1d- 중첩된 확장에 상수 문자열( )을 넣는 방법 입니다 .
  • ${(%)...}- 백분율 시퀀스는 프롬프트 시퀀스로 처리됩니다. ${...}확장이 우리를 "즉시 세계"에서 "정상 가변 세계"로 데려가기 때문에 이것이 필요합니다 .
  • %1d- 현재 디렉터리의 마지막 구성 요소입니다. 의 /a/b/c/ddd경우 이는 입니다 ddd.
  • ${...[1,2]}- 문자열의 처음 두 문자입니다. 배열은 zshindex 로 시작합니다 1.

가지다 정보내부에zsh문서.

관련 정보