zip - “.”之间的区别使用 -r 标志时的“* .[^.]*”模式

zip - “.”之间的区别使用 -r 标志时的“* .[^.]*”模式

zip使用带标志的命令递归压缩目录内容(包括隐藏文件和目录)时-r,以下之间有什么区别:

zip ../foo.zip -r .

和:

zip ../foo.zip -r * .[^.]*

或者它们完全一样吗?

第一个命令应以当前目录 ( .) 作为目标,-r参数应包含所有隐藏文件和目录。

第二个命令,如果我没记错的话,匹配当前目录中的所有非点文件(第一个*),然后匹配以.char 开头的所有文件,后跟除点([^.])之外的任何字符 - 所以这排除了..父目录。

我在网上的示例中找到了第二个命令,但如果它的作用完全相同,我不明白使用它来代替更简单的第一个命令的意义。

同样在 POSIX shell 脚本中,ShellCheck 抱怨* .[^.]*应将其替换为 的符号,对我来说,如果一个简单的函数可以完成相同的工作,./* .[!.]*那么这是不使用它的另一个很好的理由。.

我的猜测是,在示例中,我发现zip ../foo.zip * .[^.]*(不带-r标志)命令被执行,并且-r只是添加了标志,而不认为-r如果将当前路径(.)作为目标而不是* .[^.]*.

所以我的问题是:使用该标志时这两个命令是否等效-r?我的猜测正确吗?

相关内容