——來自《鳥哥的Linux私房菜》shell
在 bash 的操做環境中還有一個很是有用的功能,那就是通配符 (wildcard) ! 咱們利用 bash 處理數據就更方便了!底下列出一些經常使用的通配符:bash
符號 | 意義 |
* | 表明『 0 個到無窮多個』任意字符 |
? | 表明『必定有一個』任意字符 |
[ ] | 一樣表明『必定有一個在括號內』的字符(非任意字符)。例如 [abcd] 表明『必定有一個字符, 多是 a, b, c, d 這四個任何一個』 |
[ - ] | 如有減號在中括號內時,表明『在編碼順序內的全部字符』。例如 [0-9] 表明 0 到 9 之間的全部數字,由於數字的語系編碼是連續的! |
[^ ] | 若中括號內的第一個字符爲指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 表明 必定有一個字符,只要是非 a, b, c 的其餘字符就接受的意思。 |
接下來利用通配符配合 ls 找檔名看看:編碼
範例一:找出 /etc/ 底下以 cron 爲開頭的檔名 ll -d /etc/cron* <==加上 -d 是爲了僅顯示目錄而已 範例二:找出 /etc/ 底下文件名『恰好是五個字母』的文件名 ll -d /etc/????? <==因爲 ? 必定有一個,因此五個 ? 就對了 範例三:找出 /etc/ 底下文件名含有數字的文件名 ll -d /etc/*[0-9]* <==記得中括號左右兩邊均需 * 範例四:找出 /etc/ 底下,檔名開頭非爲小寫字母的文件名: ll -d /etc/[^a-z]* <==注意中括號左邊沒有 * 範例五:將範例四找到的文件複製到 /tmp 中 cp -a /etc/[^a-z]* /tmp |
除了通配符以外,bash 環境中還有如下特殊符號:spa
符號 | 內容 |
# | 批註符號:這個最常被使用在 script 當中,視爲說明!在後的數據均不運行 |
\ | 跳脫符號:將『特殊字符或通配符』還原成通常字符 |
| | 管線 (pipe):分隔兩個管線命令的界定(後兩節介紹); |
; | 連續命令下達分隔符:連續性命令的界定 (注意!與管線命令並不相同) |
~ | 用戶的家目錄 |
$ | 取用變量前導符:亦便是變量以前須要加的變量取代值 |
& | 工做控制 (job control):將命令變成背景下工做 |
! | 邏輯運算意義上的『非』 not 的意思! |
/ | 目錄符號:路徑分隔的符號 |
>, >> | 數據流重導向:輸出導向,分別是『取代』與『累加』 |
<, << | 數據流重導向:輸入導向 (這兩個留待下節介紹) |
' ' | 單引號,不具備變量置換的功能 |
" " | 具備變量置換的功能! |
` ` | 兩個『 ` 』中間爲能夠先運行的命令,亦可以使用 $( ) |
( ) | 在中間爲子 shell 的起始與結束 |
{ } | 在中間爲命令區塊的組合! |
以上爲 bash 環境中常見的特殊符號彙整!理論上,你的『檔名』儘可能不要使用到上述的字符啦!ip