介紹[54,17]正則表達式
bash自己並不支持正則表達式regex, 而shell下的有些工具是支持解釋regex的,使用regex的是shell命令和工具, 如grep,sed,awk等.但shell 支持通配符,區別於regex,通配是把一個包含通配符的非具體文件名擴展存儲在計算機,服務器或者網絡上的一批具體文件名的過程.shell
通配符文件名匹配bash
通配符用來匹配文件名,路徑名,包括命令, 一般將四種通配方式組合使用。Linux 文件名可以使用除/ 外的任何可打印字符(文件名開頭和結尾的空格很難識別,除非有意,避免使用空格和tab來命名文件以免沒必要要的麻煩)。以. 開頭的文件爲隱藏文件。服務器
? * [] {} ^ 和內部變量GLOBIGNORE 構成了shell通配的全部內容.網絡
*ide |
匹配零個或多個字符(開頭的.除外),可匹配其它位置的,能夠是空字符串工具 |
?spa |
匹配除首字符外的任意單個字符(開頭的.除外),且不匹配空blog |
[...]字符串 |
匹配給出列表或範圍中的任意一個字符 |
[^...] |
匹配給出列表或範圍外的任意一個字符 |
{} |
表示一組字符串的集合 |
使用示例
[abcd] 匹配abcd中任何一個字符
[a-h] a-h 中的任意一字符
[0-9]匹配0-9中任何一個數字
[a-zA-Z0-9]
[!0-9]
mkdir/touch test{a,b}
mkdir/touch /test/{a,b}
ls [xyz]*.conf
shell 特殊符號
關於引用quote
引用是將字符串用引用符號引發來,以防止特殊字符被shell腳本重解釋爲其餘意義,且屏蔽特殊字符的特殊意義,而將其解釋爲字面意義,用於引用的字符有轉義字符\,單引號'' 雙引號""
shell若只想將會被它處理的特殊字符看成普通字符處理。bash shell 有三種方法避免字符被shell解釋。
其它特殊字符