zip - “.”之間的區別使用 -r 標誌時的「* .[^.]*」模式

zip - “.”之間的區別使用 -r 標誌時的「* .[^.]*」模式

zip使用帶有標誌的命令遞歸壓縮目錄內容(包括隱藏檔案和目錄)時-r,以下之間有什麼區別:

zip ../foo.zip -r .

和:

zip ../foo.zip -r * .[^.]*

或者它們完全一樣嗎?

第一個指令應以目前目錄 ( .) 為目標,-r參數應包含所有隱藏檔案和目錄。

第二個命令,如果我沒記錯的話,匹配當前目錄中的所有非點文件(第一個*),然後匹配以.char 開頭的所有文件,後跟除點([^.])之外的任何字符- 因此這排除了..父目錄。

我在網路上的範例中找到了第二個命令,但如果它的作用完全相同,我不明白使用它來代替更簡單的第一個命令的意義。

同樣在 POSIX shell 腳本中,ShellCheck 抱怨* .[^.]*應將其替換為 的符號,對我來說,如果一個簡單的函數可以完成相同的工作,./* .[!.]*那麼這是不使用它的另一個很好的理由。.

我的猜測是,在示例中,我發現zip ../foo.zip * .[^.]*(不帶-r標誌)命令已被執行,並且-r只是添加了標誌,而不認為-r如果將當前路徑(.)作為目標而不是* .[^.]*.

所以我的問題是:使用該標誌時這兩個命令是否等效-r?我的猜測正確嗎?

相關內容