zsh 与 bash 的 shopt -s globstar 和 shopt -s dotglob 等同于什么?

zsh 与 bash 的 shopt -s globstar 和 shopt -s dotglob 等同于什么?

我需要zsh等同于和bash。我该怎么做?shopt -s globstarshopt -s dotglob

更新01: 按照@muru 的回答,我在 shellsetopt globdots中使用zsh并运行以下命令:

for i in INSTALL_USER_FILES/** ; do echo "=> '$i'" ; done

但,结果却只是:

=> 'INSTALL_USER_FILES/.local'

目录中没有任何内容.local/以递归方式列出?

答案1

递归通配符是 zsh 中的默认功能,无需启用。全球**此处只是语法糖:

形式为“ (foo/)#”的路径名组件与由零个或多个与模式匹配的目录组成的路径匹配foo

作为简写,“ **/”相当于“ (*/)#”;请注意,这将匹配当前目录及其子目录中的文件。

相当于dotglobGLOB_DOTS

GLOB_DOTS

不要求.文件名前面的“ ”明确匹配。

可以使用以下D标志为单个 glob 启用它:

% mkdir foo; touch foo/{bar,.bar}; echo foo/*(D)
foo/.bar foo/bar

相关内容