![zip - “.”之間的區別使用 -r 標誌時的「* .[^.]*」模式](https://rvso.com/image/191880/zip%20-%20%E2%80%9C.%E2%80%9D%E4%B9%8B%E9%96%93%E7%9A%84%E5%8D%80%E5%88%A5%E4%BD%BF%E7%94%A8%20-r%20%E6%A8%99%E8%AA%8C%E6%99%82%E7%9A%84%E3%80%8C*%20.%5B%5E.%5D*%E3%80%8D%E6%A8%A1%E5%BC%8F.png)
zip
使用帶有標誌的命令遞歸壓縮目錄內容(包括隱藏檔案和目錄)時-r
,以下之間有什麼區別:
zip ../foo.zip -r .
和:
zip ../foo.zip -r * .[^.]*
或者它們完全一樣嗎?
第一個指令應以目前目錄 ( .
) 為目標,-r
參數應包含所有隱藏檔案和目錄。
第二個命令,如果我沒記錯的話,匹配當前目錄中的所有非點文件(第一個*
),然後匹配以.
char 開頭的所有文件,後跟除點([^.]
)之外的任何字符- 因此這排除了..
父目錄。
我在網路上的範例中找到了第二個命令,但如果它的作用完全相同,我不明白使用它來代替更簡單的第一個命令的意義。
同樣在 POSIX shell 腳本中,ShellCheck 抱怨* .[^.]*
應將其替換為 的符號,對我來說,如果一個簡單的函數可以完成相同的工作,./* .[!.]*
那麼這是不使用它的另一個很好的理由。.
我的猜測是,在示例中,我發現zip ../foo.zip * .[^.]*
(不帶-r
標誌)命令已被執行,並且-r
只是添加了標誌,而不認為-r
如果將當前路徑(.
)作為目標而不是* .[^.]*
.
所以我的問題是:使用該標誌時這兩個命令是否等效-r
?我的猜測正確嗎?