Wildcards
.??* 在 shell 命令中是什麼意思?
以下命令將所有“點”文件和文件夾:
tar
tar -zcvf dotfiles.tar.gz .??*
我熟悉正則表達式,但我不明白如何解釋
.??*
。我執行ls .??*
並tree .??*
查看了列出的文件。為什麼這個正則表達式包含.
以 example 開頭的文件夾中的所有文件?
Glob不是正則表達式。通常,shell 會嘗試將您在命令行中鍵入的任何未引用的內容解釋為 glob。Shell 根本不需要支持正則表達式(儘管實際上許多更高級、更現代的 Shell 都支持,例如構造中的
=~
正則表達式匹配運算符bash
[[
)。是
.??*
一個球體。它匹配任何以文字點開頭的文件名.
,後跟任意兩個(不一定相同)字元,??
後跟等效於 的正則表達式[^/]*
,即 0 個或多個不是 的字元/
。有關 shell 路徑名擴展(“globbing”的全稱)的完整詳細資訊,請參閱POSIX 規範。