Zip
在 zip 中放置 –include 列表
當我執行命令時
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