Zip

在 zip 中放置 –include 列表

  • August 29, 2019

當我執行命令時

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

我收到錯誤消息zip error: Invalid command arguments (nothing to select from)

如果我將命令寫為

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

有用。為什麼?查看 zip 手冊頁(特別是 –include 選項),我發現:

儘管過去的命令語法在命令行末尾需要 -i,但這個版本 實際上允許 -i (或 –include) 任何地方。文件列表在下一個以 - 開頭的參數、命令行結尾或列表終止符 @(只是 @ 的參數)處終止。

由此,我會得出結論,該命令的兩個版本都應該工作。

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

在這種情況下,重要的部分是

文件列表終止於下一個以 開頭的參數-、命令行的結尾或列表終止符@(一個只是 的參數@)。

當你寫

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

tmp/small_v.zip並被bin視為給定的文件--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)

引用自:https://unix.stackexchange.com/questions/362841