$ {#$ {(s %%) string // (%([kf1] |) |) {*} | %[bbkf])}}
문제
나는 이것을 ADAM2 ZSH 프롬프트에서 발견했으며 그것이 무엇을 의미하는지 전혀 모른다. 분명히 그것은 "문자열"의 길이를 계산하지만, 그것이 어떻게하는지는 저를 넘어서는 방법입니다.
${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}}
해결책
"zsh 프롬프트 Regex"를 구글링하고 발견했습니다. 이것. $#은 내용의 길이를 계산한다고 말합니다. 해당 링크에는 더 많은 정보가 있습니다 ZSH 사용자 안내서 나는 찾았다.
다른 팁
패턴은 일부 Ansi 스타일 문자 형식을 제거한 후 문자열의 길이를 계산합니다.
약:
${# }
- 길이${ }
- 중첩(S%%)
- 끝에서 시작하는 서브 스트링//
- 전세계 대체물 (이 경우 나중에 슬래시가 없으므로 삭제)( )
- 캡처 그룹\%
- 문자 퍼센트 부호[KF1]
- 문자 목록 : k = 배경색 시작, f = 전경 색상 시작[Bbkf]
- 문자 목록 : B = BEART BEART BOLD, B = END BOLD, K = 끝 배경, F = 끝 포 그라운드
그리고 나는 길을 잃었다.
제휴하지 않습니다 StackOverflow