다음과 같은 zsh 위젯이 있습니다
down-line-or-select() {
if [[ $RBUFFER == *$'\n'* ]]; then
zle down-line
else
zle menu-select -w
fi
}
zle -N down-line-or-select
bindkey $terminfo[kcud1] down-line-or-select
여기서는 의미를 이해하지 못합니다 *$'\n'*
. 누군가 이것을 설명할 수 있나요?
답변1
이 테스트는 [[ $variable == pattern ]]
변수 값이 주어진 쉘 패턴과 일치하는지 테스트합니다.
이 경우 패턴은 입니다 *$'\n'*
. 패턴의 일부는 $'\n'
리터럴 줄 바꿈을 나타냅니다. $'...'
일반적으로 말하면 "ANSI C 문자열"입니다. 이는 내부 백슬래시 이스케이프 시퀀스가 $'...'
C 언어 표준( \n
개행 문자, \t
탭 등) 에 설명된 대로 해석됨을 의미합니다. 양쪽의 '는 *
접두사 및 접미사 문자열과 일치합니다.
즉, 쉘 패턴은 *$'\n'*
개행 문자가 하나 이상 포함된 모든 문자열과 일치합니다. 즉, 시험은 다음과 같습니다.진짜의 여러 줄 문자열에 대해 $RBUFFER
.
테스트 자체도 쉘에 작성된 대로 유효합니다 bash
.