1.通配符
*匹配任何長度的任何串
?匹配單個字符
[...]匹配單個括號內的字符,[]中的-,!具有特殊含義,如:
$echo[a-z]*
顯示首字母在a-z范圍內的文件或目錄名
$echo[a,b]*
顯示首字母為a或b的文件或目錄名
$echo[!a]*
顯示首字母不為a的文件或目錄名(使用!時,!必須是[后的第一個字符)
!還可與-和,一起使用
在Bash2.0以后的版本中,若用shopt打開了extglob選項(shopt-sextglob),
那么還可以擴展的模式表達式(模式表達式是指那些包含了一個或多個shell通配
符的字):
*(pattern[|pattern]...)匹配模式的零次或多次出現
(pattern[|pattern]...)匹配模式的一次或多次出現
@(pattern[|pattern]...)匹配模式的一次出現
?(pattern[|pattern]...)匹配任何一個模式.與*不同的是它不匹配
多個模式或模式的重復出現
!(pattern[|pattern]...)與?類似,不過是不包括指定模式的串
應該注意到,模式表達式的定義是遞歸的,每個表達式都可以包含一個或多個
模式,而且模式表達式也是可以嵌套的.
2.數據或程序控制使用的特殊字符:
主要有:
>(file)輸出重定向到文件
>>(file)輸出重定向到文件,內容加到已存在的文件尾部
<(file)輸入重定向到文件
;命令分隔符
|管道符,把一條命令的輸出重定向為另一命令的輸入
&放在命令之后強迫命令在后臺執行
``命令替換,重定向一條命令的輸出為另一命令的參數
3.用于引用和逃逸的特殊字符:
逃逸符/表示以后的字符不具有特殊的含義或不是Shell的函數,
除此之外,Bash還可以識別一些C語言中的轉義序列,如:
/a響伶
/b回退
/eEscape
/n換行
/r回車
/t制表
/v制表
//反斜線
/nnn八進制的ASCII編碼
/xnnn十六進制的ASCII編碼
但必須以如下方式進行引用:
$'string'
引用符'和"將特殊字符或由空白分隔的字引用起來組成一個簡單字符串
兩者區別在與,雙引號內的內容可以進行參數和變量替換