歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux Shell 通配符、轉義字符、元字符、特殊字符

一、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通配符  

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

需要說明的是:通配符看起來有點象正則表達式語句,但是它與正則表達式不同的,不能相互混淆。把通配符理解為shell特殊代號字符就可。

二、shell元字符

shell除了有通配符之外,由shell負責預先先解析後,將處理結果傳給命令行之外,shell還有一系列自己的其他特殊字符。

shell元字符

字符說明  =  變量名=值,為變量賦值。注意=左右緊跟變量名和值,中間不要有空格  $  變量值替換,$變量名替換為shell變量的值;為避免在文本連接時混淆,請使用${變量名};$0...$9 代表shell文件的參數。  >  prog > file 將標准輸出重定向到文件。  >>  prog >> file 將標准輸出追加到文件。  <  prog < file 從文件file中獲取標准輸入  |  管道命令,例:p1 | p2 將p1的標准輸出作為p2的標准輸入  &  後台運行命令,最大好處是無需等待命令執行結束,就可以在同一命令行下繼續輸入命令  ()  在子shell中執行命令  {}  在當前shell中執行命令,或用在變量替換的界定范圍(例如上面的${變量名}用法)。  ;  命令結束符。例如p1;p2表示先執行p1,再執行p2  &&  前一個命令執行成功後,才繼續執行下一個命令。例:p1 && p2 ;若p1執行成功後,才執行p2,反之,不執行p2;  ||  前一個命令執行失敗後,才繼續執行下一個命令。例:p1 || p2 ;若p1執行成功後,不執行p2,反之,才執行p2;  !  執行歷史記錄中的命令  ~  home目錄

三、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

Copyright © Linux教程網 All Rights Reserved