CentOS 基礎命令 I
在 CentOS 的命令列中使用命令的時候,如果不使用正則相關的命令,我們是否可以使用類似正則的匹配呢,比如在使用 ls、find、rm 等命令時?
glob 匹配正是您所需要的。此匹配規則在 CentOS 手冊頁的 glob 條目的第七類中可以找到。 命令 man 7 glob
可查詢此資訊。
glob 匹配型別
glob 具有四種匹配型別,分別為萬用字元(wildcard)、字元類(Character classes)、範圍(Ranges)和反(Complementation)匹配。
萬用字元匹配(wildcard)
單個字串就是一個萬用字元匹配,但在此字串中如有 ?、* 或 [ 符號時,將會啟用匹配擴充套件。
* 匹配 0 至 n 個任意字元。
? 匹配任意單個字元。
字元類匹配(Character classes)
[]
匹配括號內用逗號分隔的字元集合中的任意單個字元。
[][!]
將匹配 ]、[、! 三個字元中的任意一個字元。
範圍匹配(Ranges)
[start_char-end_char]
方括號加連字元方式,可以匹配多個連續字母字元或遞增數字字元集合中的任意單個字元。
[A-Fa-f0-9]
等同 [ABCDEFabcdef0123456789]
反匹配(Complementation)
[!character_set]
方括號中使用感嘆號,可以匹配所有字元集合中的,但不包括在感嘆號後字元集合的任意單個字元。
[!]a-]
將匹配除了 ]、a、、- 字元的所有字元集合中的任意單個字元。
注意事項
在 shell 命令列中,轉譯字元 \
可以取消 ?
、*
和 [
的特殊功能,但在方括號中的字元表示願意,如 [[?*\]
匹配其中四個字元。
在對路徑名匹配中, /
字元不能被 ?
、*
或像 "[.-0]" 範圍匹配所匹配。在範圍匹配中包含 /
,是語法錯誤。
檔名以 .
為起始時,無法被 *
匹配,必須顯式的匹配點號。
rm *
命令不會刪除所有檔案。
tar c *
命令不會打包所有檔案,tar c .
就好多了。