在使用shell命令對(duì)多個(gè)文件對(duì)象執(zhí)行單一操作時(shí),例如刪除當(dāng)前目錄下的file1到file8,多次使用相同的命令rm file1到rm file8非常麻煩,通常使用通配符模式解決這個(gè)問題:rm file[1-8]。
當(dāng)使用通配符指定一種模式時(shí),該模式與底層系統(tǒng)上的一個(gè)或多個(gè)文件匹配,shell以空格隔開的所有匹配對(duì)象的列表來替換該模式;當(dāng)模式不能找到匹配對(duì)象時(shí),shell將不理會(huì)參數(shù)、通配符等,保留原樣。例如,當(dāng)ls -d /etc/g*不能找到/etc/g*的任何文件時(shí),就會(huì)報(bào)錯(cuò)。


--------代表任意個(gè)字符,但不會(huì)匹配以.開始的文件名

--------代表一個(gè)字符

--------轉(zhuǎn)義字符,可將通配符或者特殊字符還原成一般字符
[abc]
--------匹配[]里面的某個(gè)字符
[a-z]
--------匹配a到z之間的某個(gè)字符,還能寫成[A-Z]、[0-9]、[A-Za-z]等
[!abc]
--------匹配任意不包含在[!]里的字符,同樣包括[!a-z]等的用法,這里[和!之間不能有空格
{c1,c2}
--------同c1或者c2相匹配,其中c1和c2也是通配符,比如{[0-9]abc,[efg]}與[0-9]abc、[efg]均通配
;
--------連續(xù)性命令,比如command1;command2,不管前者是否正確,后者都會(huì)執(zhí)行,使用&&和||則會(huì)有先后順序

--------邏輯運(yùn)算中的非
/
--------路徑字符
$
--------讀取變量字符,例如echo $PATH
>,>> 
--------輸出導(dǎo)向,分別為清空與末尾累加

--------單引號(hào)

--------雙引號(hào)
`` 
--------兩個(gè)`中間為可以先執(zhí)行的指令,例如cat /etc/`pwd`/hello.

注意:
使用[]時(shí),[與]之間絕對(duì)不能為空,所以[][*]表示[、]與*任意一個(gè)字符來匹配,如果要處理與通配符相關(guān)的字符,需要使用轉(zhuǎn)義字符\,例如:
echo $[abc]
輸出結(jié)果是a、b或者c變量的值。
echo $\[abc\]
輸出結(jié)果是[abc]變量的值(舉例而已,當(dāng)然不存在[abc]這樣的變量名)。
echo '[abc]'
單引號(hào)也能起到與轉(zhuǎn)義字符同樣的作用。雙引號(hào)內(nèi)部保留所有通配符的原義,而單引號(hào)內(nèi)部將通配符視為普通字符