Shell 萬用字元與特殊符號

2022-08-20 04:45:09 字數 1497 閱讀 5410

——來自《鳥哥的linux私房菜》

在 bash 的操作環境中還有乙個非常有用的功能,那就是萬用字元 (wildcard) ! 我們利用 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 環境中還有以下特殊符號:

符號內容

#批註符號:這個最常被使用在 script 當中,視為說明!在後的資料均不執行

\跳脫符號:將『特殊字元或萬用字元』還原成一般字元

|管線 (pipe):分隔兩個管線命令的界定(後兩節介紹);

;連續命令下達分隔符:連續性命令的界定 (注意!與管線命令並不相同)

~使用者的家目錄

$取用變數前導符:亦即是變數之前需要加的變數取代值

&工作控制 (job control):將命令變成背景下工作

!邏輯運算意義上的『非』 not 的意思!

/目錄符號:路徑分隔的符號

>, >>

資料流重導向:輸出導向,分別是『取代』與『累加』

<, <<

資料流重導向:輸入導向 (這兩個留待下節介紹)

' '單引號,不具有變數置換的功能

" "具有變數置換的功能!

` `兩個『 ` 』中間為可以先執行的命令,亦可使用 $( )

( )在中間為子 shell 的起始與結束

在中間為命令區塊的組合!

以上為 bash 環境中常見的特殊符號彙整!理論上,你的『檔名』盡量不要使用到上述的字元啦!

萬用字元與特殊符號

萬用字元符與特殊符號 符號內容 萬用字元,代表0 或多個字元 數字 萬用字元,代表乙個字母 批註,這個最常被使用在 script當中,視為說明 跳脫符號,將 特殊字元或萬用字元 還原成一般字元 分隔兩個管道命令的界定 連續性命令的界定 使用者的家目錄 取出變數中的內容 有點類似於c 語言裡 跟指標的...

Linux 萬用字元與特殊符號

符號 內容 萬用字元,代表 0 個或多個字元 或數字 萬用字元,代表 一定有 乙個字母 批註,這個最常被使用在 script 當中,視為說明 跳脫符號,將 特殊字元或萬用字元 還原成一般字元 分隔兩個管線命令的界定 連續性命令的界定 注意!與管線命令並不相同 使用者的家目錄 取變數值 將指令變成背景...

shell 特殊符號

變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是 1,第二個引數是 2。傳遞給指令碼或函式的引數個數。傳遞給指令碼或函式的所有引數。傳遞給指令碼或函式的所有引數。被雙引號 包含時,與 稍有不同,下面將會講到。上個命令的退出狀態,或函式的...