zip
使用带标志的命令递归压缩目录内容(包括隐藏文件和目录)时-r
,以下之间有什么区别:
zip ../foo.zip -r .
和:
zip ../foo.zip -r * .[^.]*
或者它们完全一样吗?
第一个命令应以当前目录 ( .
) 作为目标,-r
参数应包含所有隐藏文件和目录。
第二个命令,如果我没记错的话,匹配当前目录中的所有非点文件(第一个*
),然后匹配以.
char 开头的所有文件,后跟除点([^.]
)之外的任何字符 - 所以这排除了..
父目录。
我在网上的示例中找到了第二个命令,但如果它的作用完全相同,我不明白使用它来代替更简单的第一个命令的意义。
同样在 POSIX shell 脚本中,ShellCheck 抱怨* .[^.]*
应将其替换为 的符号,对我来说,如果一个简单的函数可以完成相同的工作,./* .[!.]*
那么这是不使用它的另一个很好的理由。.
我的猜测是,在示例中,我发现zip ../foo.zip * .[^.]*
(不带-r
标志)命令被执行,并且-r
只是添加了标志,而不认为-r
如果将当前路径(.
)作为目标而不是* .[^.]*
.
所以我的问题是:使用该标志时这两个命令是否等效-r
?我的猜测正确吗?