--include 列表在 zip 中的放置

--include 列表在 zip 中的放置

当我执行命令时

zip -r --include '*.rb' '*.sh' '*.zsh' '*irb*' tmp/small_v.zip bin

我收到错误消息zip 错误:命令参数无效(没有可供选择的内容)

如果我将命令写为

zip -r tmp/small_v.zip bin --include '*.rb' '*.sh' '*.zsh' '*irb*'

有用。为什么?查看 zip 手册页(特别是 --include 选项),我发现:

尽管命令语法过去需要在命令行末尾添加 -i,但此版本 实际上允许-i(或--include)在任何地方。文件列表在下一个以 - 开头的参数、命令行末尾或列表终止符 @(仅是 @ 的参数)处终止。

由此,我得出结论,该命令的两个版本都应该有效。

我正在使用在 MacOS Sierra 上运行的 zip 3.0。

答案1

本例中重要的部分是

文件列表在下一个以 开头的参数-、命令行末尾或列表终止符@(仅是 的参数@)处终止。

当你写的时候

zip -r --include '*.rb' '*.sh' '*.zsh' '*irb*' tmp/small_v.zip bin

tmp/small_v.zipbin被视为提供给 的文件--include,因此该zip命令最终没有目标文件,也没有要处理的文件。

--include 可以放在任何地方,但它的论点仍然必须有意义,并且其余论点必须是可识别的。你可以将你的命令写为

zip --include '*.rb' '*.sh' '*.zsh' '*irb*' -r tmp/small_v.zip bin

相反,使用-r参数来标识 的文件列表的末尾--include,或使用@来终止列表:

zip -r --include '*.rb' '*.sh' '*.zsh' '*irb*' @ tmp/small_v.zip bin

--include本节末尾有非常相似的示例联机zip(1)帮助页

答案2

这有点奇怪,我没有进行深入研究,但我需要使用

zip -r --include="server_*" ...

包含以 sth 开头的文件,使其在 CI/CD 设置上运行

相关内容