`(.N)`在这个扩展的glob中做了什么?

时间:2015-04-25 22:02:19

标签: zsh glob prezto

Prezto文档包含以下用于设置符号链接的示例脚本:

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

我了解"${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N)中的所有内容,直至(.N)(.N)在这里意味着什么?

奖金问题,什么是${rcfile:t}?我知道它解析为rcfile的名称,但我不知道:t的用途。

2 个答案:

答案 0 :(得分:4)

贝尔文件使用README.md (.N)

拒绝或否定'^'所有内容^README.md(.N)

^符号是正则表达式,意思是某事物的开头。

${rcfile:t}部分只允许剥离字符串的dir名称。 因此,循环将为 zpresto 目录的每个配置文件创建一个所需的符号链接。

答案 1 :(得分:0)

该glob(实际上是扩展的glob)^README.md(.N)会扩展到所有文件 README.md 除外,或者返回(空字符串)。

扩展:由setopt行设置。 ^需要(见下文)。

文件(.N)中的代表文件(不是目录或链接)。

README.md除外: ^。考虑一下正则表达式中括号内的^。那不是不是是指以README.md开头的文件。

(.N)中的 N 。它说如果扩展失败,则将返回一个空字符串。否则,如果${ZDOTDIR:-$HOME}"/.zprezto/runcoms/"仅具有README.md文件或根本没有文件,则该行将返回错误。