通配符

通配符與正則表達式

  • 1.通配符(wildcard)就是萬用牌的意思
      * 表示匹配任意長度的任意字符
      ? 表示匹配一個任意字符
      […]則表示匹配括號中列出的字符中的任意一個
      [!..]表示不匹配括號中列出的字符中的任意一個

  • 2.正則表達式(regular expression)一種字符串匹配模式標準
    2.1.集合符號[]
      [abc] 字符集合(a、b或z)
      [^abc] 負值字符集合 (任何字符, 除了abc)
    2.2.常用元字符
      ^ 匹配字符串的開始
      $ 匹配字符串的結(jié)束
      \b 匹配單詞的開始或結(jié)束
    2.3.常用限定符{}
      {n} 重復n次
      {n,} 重復n次或更多次
      {n,m} 重復n到m次,
    2.4.貪婪和懶惰{}?
      {n,m}? 重復n到m次,但盡可能少重復
      {n,}? 重復n次以上,但盡可能少重復

通配符與正則表達式

通配符是由 shell處理 的(不是由所涉及到命令語句處理的,其實我們在shell各個命令中也沒有發(fā)現(xiàn)有這些通配符介紹), 它只會出現(xiàn)在 命令的“參數(shù)” 里(它不用在 命令名稱里, 也不用在 操作符上)。當shell在“參數(shù)”中遇到了通配符時,shell會將其當作路徑或文件名去在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給“命令”,然后再由命令進行處理??傊ㄅ浞?實際上就是一種shell實現(xiàn)的路徑擴展功能 。在通配符被處理后, shell會先完成該命令的重組,然后再繼續(xù)處理重組后的命令,直至執(zhí)行該命令。

我們回過頭分析上面命令吧:在第2個命令中,*.txt 實際shell搜索文件,找到了符合條件的文件,命令會變成:ls a.txt b.txt ,實際在執(zhí)行l(wèi)s 時候傳給它的是a.txt b.txt .

而命令3,d.txt 由于當前目錄下面沒有這樣的文件或目錄,直接將”d.txt” 作為ls 參數(shù),傳給了 ls .這個時候”*” 只是一個普通的 ls 參數(shù)而已,已經(jīng)失去了它通配意義。 由于找不到文件,所以會出現(xiàn):無法訪問提示!

了解了shell通配符,我們現(xiàn)在看下,shell常見通配符有那一些了。

shell常見通配符:

字符 含義 實例
* 匹配 0 或多個字符 a*b a與b之間可以有任意長度的任意字符, 也可以一個也沒有, 如aabcb, axyzb, a012b, ab。
? 匹配任意一個字符 a?b a與b之間必須也只能有一個字符, 可以是任意字符, 如aab, abb, acb, a0b。
[list] 匹配 list 中的任意單一字符 a[xyz]b a與b之間必須也只能有一個字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。
[!list] 匹配 除list 中的任意單一字符 a[!0-9]b a與b之間必須也只能有一個字符, 但不能是阿拉伯數(shù)字, 如axb, aab, a-b。
[c1-c2] 匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z] a[0-9]b 0與9之間必須也只能有一個字符 如a0b, a1b... a9b。
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串 a{abc,xyz,123}b a與b之間只能是abc或xyz或123這三個字符串之一。

需要說明的是:通配符看起來有點象正則表達式語句,但是它與正則表達式不同的,不能相互混淆。把通配符理解為shell 特殊代號字符就可。而且涉及的只有,*,? [] ,{} 這幾種。

轉(zhuǎn)載自:
http://blog.sina.com.cn/s/blog_9011bd8c0102uy8z.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 概述 通配符和正則表達式經(jīng)常會引起混亂,本文兩者之間的區(qū)別進行比較。 通配符用于匹配文件名,shell在做Pa...
    ghbsunny閱讀 3,658評論 0 1
  • 2019.4.16 1.字符集:文字符號在計算機中標識的方法 (1)臨時修改 [root@lsr7 ~]# exp...
    小孟灬閱讀 837評論 0 0
  • shell介紹 * shell是一個命令解釋器,提供用戶和機器之間的交互。* 支持特定語法,比如邏輯判斷、循環(huán)。*...
    hch004閱讀 750評論 0 1
  • 1. 通配符(Wildcard) 在 Shell 中命令中,通常會使用通配符表達式來匹配一些文件,如以下命令可以查...
    Happioo閱讀 12,528評論 5 10
  • 有時候會不自覺的問自己,自己是誰?來到這個世界是干什么的?為什末來?還有為什末自己來到自己在的學校,為什末?不知道...
    ermaoHa閱讀 199評論 0 0

友情鏈接更多精彩內(nèi)容