zip
使用帶有標誌的命令遞歸壓縮目錄內容(包括隱藏檔案和目錄)時-r
,以下之間有什麼區別:
zip ../foo.zip -r .
和:
zip ../foo.zip -r * .[^.]*
或者它們完全一樣嗎?
第一個指令應以目前目錄 ( .
) 為目標,-r
參數應包含所有隱藏檔案和目錄。
第二個命令,如果我沒記錯的話,匹配當前目錄中的所有非點文件(第一個*
),然後匹配以.
char 開頭的所有文件,後跟除點([^.]
)之外的任何字符- 因此這排除了..
父目錄。
我在網路上的範例中找到了第二個命令,但如果它的作用完全相同,我不明白使用它來代替更簡單的第一個命令的意義。
同樣在 POSIX shell 腳本中,ShellCheck 抱怨* .[^.]*
應將其替換為 的符號,對我來說,如果一個簡單的函數可以完成相同的工作,./* .[!.]*
那麼這是不使用它的另一個很好的理由。.
我的猜測是,在示例中,我發現zip ../foo.zip * .[^.]*
(不帶-r
標誌)命令已被執行,並且-r
只是添加了標誌,而不認為-r
如果將當前路徑(.
)作為目標而不是* .[^.]*
.
所以我的問題是:使用該標誌時這兩個命令是否等效-r
?我的猜測正確嗎?