현재 디렉토리의 처음 두 글자만 표시하고 싶습니다.
나는 노력했다
PROMPT="%1d %# "
현재 디렉토리 를 directory1
.zsh
프롬프트 가 di
아닌 처음 두 문자만 얻으려면 어떻게 해야 합니까 ?directory1
zsh
답변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]}
- 문자열의 처음 두 문자입니다. 배열은zsh
index 로 시작합니다1
.