通配符是由shell處理的(不是由所涉及到命令語句處理的,其實我們在shell各個命令中也沒有發現有這些通配符介紹), 它只會出現在 命令的“參數”里(它不用在 命令名稱里, 也不用在 操作符上)。當shell在“參數”中遇到了通配符時,shell會將其當作路徑或文件名去在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給“命令”,然后再由命令進行處理??傊?,通配符 實際上就是一種shell實現的路徑擴展功能。在 通配符被處理后, shell會先完成該命令的重組,然后再繼續處理重組后的命令,直至執行該命令。
★ * 代表0個到無窮多個任意字符,a*b ? a與b之間可以有任意長度的任意字符,也可以一個也沒有,如aggb,a–b,a789b,ab
★?代表一定有一個任意字符,a?b ? a與b之間必須也只能有一個字符,但只能有一個字符,可以是任意字符,如aab,a-b,abb,
★[] 代表一定有一個在中括號之內的字符(非任意字符)。例如a[xyz]b,a與b之間必須也只能有一個字符,但只能是x或y或z,如axb,ayb,azb。
★[-] 有-號在中括號內,代表在編碼順序內的任意單一字符,[0-9]代表0-9內的所有數字中的單一字符,a[0-9]b,a與b之間必須也只能有一個字符,如a0b,a2b, ?a9b
★[^]中括號內有^字符,代表非括號內的其他字符,[^abc] 表示一定有一個字符,只要是非a,b,c就可以接受
★[!]同上
★{string1,string2,……}匹配string1或者string2……其一的字符串,a{abc,xyz,123}b,ab之間只能是abc,xyz,123,其中之一。
bash環境中的特殊符號
◆#批注符號,這個被使用在script當中,視為說明,其后的數據均不執行。
◆\轉義符號,將“特殊字符或者通配符”還原成一般字符。
◆|管道,分隔兩個管道命令的界定
◆$使用變量前導符,/目錄符號,路徑分隔的符號
◆!邏輯運算意義上的非
◆> ?>> ?數據流重定向,輸出導向stdout,
◆< ?<< 數據流重定向,輸入導向stdin,
◆‘ ’ ? ?單引號,不具有變量的置換功能
◆?“ ” ? 雙引號,具有變量置換的功能
◆` ` ? 中間為可以先執行的命令 ?也可以使用$()
◆; 在前一個命令結束時,忽略其返回值,繼續執行下一個命令
◆&& 短路或,在前一個命令結束時,若返回值為ture,繼續執行下一個命令
◆|| ? 短路與,在前一個命令結束時,若返回值為false,繼續執行下一個命令
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88886