glob 模式(globbing)也被稱之為 shell 通配符,名字的起源來自於 Unix V6 中的 /etc/glob (詳見 man 文檔)。glob 是一種特殊的模式匹配,最常見的是通配符拓展,也可以將 glob 模式設為精簡了的正則表達式,在最新的 CentOS 7 中已經刪除了 glob 的相關描述文檔,刪除的原因由於 glob 已經整合到了 shell 之中,然後就有了 shell 通配符。
筆者在查閱資料的時候發現關於 glob 模式或者 globbing 的相關描述以及文檔是少之又少,所以特地在這裡整理一下並重新寫一寫使用方法
shell 通配符 / glob 模式通常用來匹配目錄以及文件,而不是文本!!!
專用字符集
注
在使用通配符的過程中可能會遇到文件名中包含了特殊字符的情況,例如
bash$:ls
a\b a[123]b A[abc]123 abc!123
a 12 b #這是一個文件
在不使用專用字符集的情況下,需要使用轉義符來匹配,或者使用單引號將其框選。
這裡將 Linux shell 元字符列出,在使用通配符時如果沒有進行轉義可能就會被辨識為元字符
第六行與倒數第二行居然錯誤了,看來博客園對 Markdown 的支持有待改進
第六行內容:“ | ”命令管線
倒數第二行內容:“ \ ” 在前一個命令結束時,若返回值為 false,繼續執行下一個命令
這裡使用 /etc 下的文件為例
匹配以 a開頭,中間包含任意數量數字的文件
ls a*[0-9]*
#當然你是找不到的,因為通常情況下 /etc 下沒有以數字開頭的文件
匹配以任意小寫字母開頭,中間包含數字的文件
ls [[:lower:]]*[0-9]*
#相信你已經看到了一些文件,我們繼續
列出所有文件中以 init 開頭,英文結尾的文件
ls init*[a-z]
列出以 au,b,c 開頭的文件
ls {"au",[bc]}*
更多的實例可以通過搜索引擎找到,這裡就不多說了