Zsh

$‘n’ 是什麼意思

  • August 12, 2022

有一個 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'*。有人可以解釋一下嗎?

測試[[ $variable == pattern ]]測試變數的值是否與給定的 shell 模式匹配。

在這種情況下,模式是*$'\n'*。模式的$'\n'一部分錶示文字換行符。 $'...'通常是“ANSI C 字元串”,這意味著內部的反斜杠轉義序列$'...'按照 C 語言標準的描述進行解釋,其中\n是換行符、\t製表符等。側翼*的 ’s 將匹配任何前綴和後綴字元串。

簡而言之,shell 模式*$'\n'*將匹配任何包含至少一個換行符的字元串。換句話說,測試對於$RBUFFER.

bash正如在shell中所寫的那樣,測試本身也是有效的。

引用自:https://unix.stackexchange.com/questions/713433