전체 경로( 또는 %1~ \#
뒤에 오는) 없이 현재 디렉토리가 표시되도록 프롬프트를 이와 같이 설정하고 싶습니다 . 하지만 디렉터리 이름이 길면 다 필요하지 않습니다. 어떻게 8자로 제한할 수 있나요? zsh에 내장된 기능이 있습니까, 아니면 일부 외부 도구를 사용해야 합니까?%
#
답변1
디렉터리 이름을 자르려면 다음을 시도해 보세요.
PS1='%8>..>%1~%<< %# '
예: 이제 디렉토리가 Wow longdirnameislong
프롬프트에 다음과 같이 표시됩니다.
Wow lo.. %
man 1 zshmisc
설명하다:
프롬프트의 조건부 하위 문자열
%<string<
%>string>
%[xstring]
프롬프트 문자열의 나머지 부분에 대한 잘림 동작을 지정합니다. 더 이상 사용되지 않는 세 번째 형식은 x 가 또는
%xstringx
인 것과 동일합니다 . 문자열은 잘린 부분 대신 표시됩니다. 즉시 확장되지는 않습니다.<
>
세 번째 형식에서는
[
프롬프트에 표시될 수 있는 다양한 문자열의 최대 허용 길이를 지정하는 숫자 인수가 뒤에 올 수 있습니다. 처음 두 형식에서 이 숫자 인수는 음수일 수 있으며, 이 경우 잘림 길이는 현재 프롬프트 행에 남아 있는 문자 위치 수에서 숫자 인수의 절대값을 빼서 결정됩니다. 길이가 0이거나 음수인 경우 길이 1이 사용됩니다. 즉, 음수 인수는 오른쪽 여백(RPROMPT의 왼쪽 여백) 앞에 최소 n 문자를 남기도록 잘림을 정렬합니다.
<
문자열의 왼쪽이 잘리는 형식과>
문자열의 오른쪽이 잘리는 형식입니다. 예를 들어 현재 디렉터리가 이면/home/pike
프롬프트가%8<..<%/
로 확장됩니다..e/pike
. 이 문자열에서 종료 문자(<
,>
또는]
) 또는 실제로 모든 문자는 선행하는\
;로 인해 발생할 수 있습니다. 그러나 큰따옴표로 묶인 문자열에서 백슬래시를 제거하는 것 외에도 문자열도 표준 인쇄 처리의 대상이 되므로 print -P를 사용할 때 이를 두 배로 늘려야 합니다. 따라서 최악의 경우 시나리오입니다print -P "%<\\\\<<..."
.문자열이 지정된 잘림 길이보다 길면 잘린 문자열을 완전히 대체하여 전체가 표시됩니다.
잘릴 문자열 부분이 문자열의 끝, 구성된 다음 포함된 그룹의 끝
%(
또는 동일한 그룹화 수준에서 발생하는 다음 잘림(즉, a 내의 잘림%(
은 별도) 중 어디까지 실행되는지 묻는 메시지를 표시합니다. 먼저 온다. 특히 인수가 0인 잘림(예:%<<
)은 잘릴 문자열 범위의 끝을 표시하는 동시에 거기에서 잘림을 해제합니다. 예를 들어, 프롬프트는%10<...<%~%<<%#
현재 디렉토리의 잘린 표현을 인쇄하고 그 뒤에%
또는#
, 공백이 차례로 표시됩니다. 그렇지 않으면%<<
이 두 문자가 잘릴 문자열에 포함됩니다.%-0<<
같지 않지만 지정된%<<
힌트는 오른쪽 여백에서 잘립니다.잘림은 프롬프트의 각 줄에만 적용되며 포함된 개행 문자(있는 경우)로 구분됩니다. 잘린 프롬프트 줄의 전체 길이가 터미널 너비보다 크거나 잘릴 부분에 새 줄이 포함되어 있으면 잘림 동작이 정의되지 않으며 이후 버전의 셸에서 변경될 수 있습니다.
%-n(l.true-text.false-text)
사용 가능한 공간이 n 미만인 경우 일부 프롬프트를 삭제하는 데 사용됩니다.
답변2
이것은 매우 간단합니다!
%d
%/ Current working directory. If an integer follows the `%', it spec‐
ifies a number of trailing components of the current working direc‐
tory to show; zero means the whole path. A negative integer speci‐
fies leading components, i.e. %-1d specifies the first component.
%~ As %d and %/, but if the current working directory starts with
$HOME, that part is replaced by a `~'. Furthermore, if it has a
named directory as its prefix, that part is replaced by a `~' fol‐
lowed by the name of the directory, but only if the result is
shorter than the full path; see Dynamic and Static named directo‐
ries in zshexpn(1).
©man zshmisc