一、Linux shell通配符(wildcard)
通配符是由shell處理的(不是由所涉及到命令語句處理的,其實我們在shell各個命令中也沒有發現有這些通配符介紹), 它只會出現在命令的“參數”裡(它不用在命令名稱裡,也不用在操作符上)。當shell在“參數”中遇到了通配符時,shell會將其當作路徑或文件名去在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行替換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給“命令”,然後再由命令進行處理。
總之,通配符實際上就是一種shell實現的路徑擴展功能。在通配符被處理後, shell會先完成該命令的重組,然後再繼續處理重組後的命令,直至執行該命令。
例如以下命令:
[root@localhost wildcard]# ls
a.htm b.htm
[root@localhost wildcard]# ls *.htm
a.htm b.htm
[root@localhost wildcard]# ls d*.htm
ls: d*.htm: 沒有那個文件或目錄
分析如下:
第2個命令中,對於參數*.htm,shell在當前目錄下能搜索到相匹配文件,會換成a.htm b.htm。實際執行的是ls a.htm b.htm命令。
第3個命令,對於參數d*.htm, shell在當前目錄找不到相匹配的文件,則直接將d*.htm作為ls參數,實際執行的是ls d*.htm。由於找不到該文件,所以會出現:沒有那個文件或目錄。
了解了shell通配符,我們現在看下,shell常見通配符有那一些了。
shell通配符
需要說明的是:通配符看起來有點象正則表達式語句,但是它與正則表達式不同的,不能相互混淆。把通配符理解為shell特殊代號字符就可。
二、shell元字符
shell除了有通配符之外,由shell負責預先先解析後,將處理結果傳給命令行之外,shell還有一系列自己的其他特殊字符。
shell元字符
三、shell轉義符
有時候,我們想讓通配符,或者元字符變成普通字符。那麼這裡我們就需要用到轉義符了。 shell提供轉義符有三種。
shell轉義字符
Shell編程淺析 http://www.linuxidc.com/Linux/2014-08/105379.htm
Linux Shell參數替換 http://www.linuxidc.com/Linux/2013-06/85356.htm
Shell for參數 http://www.linuxidc.com/Linux/2013-07/87335.htm
Linux/Unix Shell 參數傳遞到SQL腳本 http://www.linuxidc.com/Linux/2013-03/80568.htm
Shell腳本中參數傳遞方法介紹 http://www.linuxidc.com/Linux/2012-08/69155.htm
Shell腳本傳遞命令行參數 http://www.linuxidc.com/Linux/2012-01/52192.htm