2021-05-12 14:32:11
Linux 萬用字元、元字元和特殊字元詳解
bash環境中非常有用的功能:萬用字元、跳脫字元和特殊字元 下面將逐一介紹
一、 萬用字元
萬用字元是一種特殊語句,主要有星號(*)、問號(?)等表示,用來模糊搜尋檔案,當查詢目錄或檔案時,可以使用萬用字元來代替一個或多個真正字元。
作用範圍:目錄和檔名
常見萬用字元:常用萬用字元包括 "*"、"?" 、"[ ]"、 "[^ ]" 、"[! ]"和"{}",具體含義見下表
表1-1 萬用字元具體含義及用法表
字元 | 含義 |
* | 匹符配任意字 |
? | 匹配單個字元 |
[] | 匹配方括號中的任意一個,不能用於建立目錄和檔案 |
[^] | 匹配方括號中的任意一個字元或數位後進行取反,等同於[! ],表示範圍可以用".."或"—”,用於查詢和刪除目錄和檔案,不用於建立目錄和檔案 |
[!] | 匹配方括號中的任意一個字元或數位後進行取反, 等同於[^ ],表示範圍可以用".."或"—", 用於查詢和刪除目錄和檔案,不用於建立目錄和檔案 |
[?-?] | 匹配方括號範圍內任意一個,用於查詢、刪除,但不能用於建立目錄和檔案 |
{string,string} | 匹配括號中的任意一個字串,表示一個範圍時,字串之間個".." |
具體用法一一舉例說明
root一次性建立目錄f1和f2,現要求一次性通過萬用字元刪除f1和f2檔案
root建立f1到f9,現要求一次性通過萬用字元建立,並刪除f5到f8
錯誤用法1:使用方括號建立f1到f9的目錄,
錯誤用法2:使用大括號用-表示範圍建立目錄f1到f9
建立目錄正確做法:正確做法是採用大括號,範圍用“..”表示
刪除目錄正確方法之一:用[^ ] 或者 [! ] 取反刪除
二、元字元
元字元:shell負責解釋處理,特殊的字元具有特殊的含義。
字元 | 含義 |
= | 設定變數、函數賦值等 |
$ | 作為變數或運算替換 |
> 或 》 | 重定向 stdout |
< 或 《 | 重定向 stdin |
& | 2>1& 把標準錯誤輸出轉化為標準正確輸出,1>2$把標準正取輸出轉化為標準錯誤輸出 &>正取錯誤一起輸出 |
( ) | 結合$符合"$( )"實現命令呼叫,綜合運算中括號優先 |
{} | 範圍界定,如 for I in {1..10},變數i取值範圍1到10 |
; | 分號,多條命令同行依次執行,執行過程無依賴 |
&& | 上一命令執行反饋正確,即$?=0,則繼續執行下一條命令 |
|| | 上一命令執行反饋錯誤,即$?=1,則繼續執行下一條命令 |
! 和 ~ |
!參照history歷史語句,~是home目錄 |
舉例說明:
通過ls檢視/app/hellohh 和/app 目錄的檔案,並重定向到1.log檔案中,便於問題分析
通過&>將正確的和錯誤的標準輸出都進行重定向
三、跳脫字元
跳脫字元:將萬用字元和元字元變為本身的字元含義
字元 | 含義 |
‘ ’ | 硬跳脫,比較傻的字元參照,保留原有字元含義,不進行跳脫 |
" " | 軟跳脫,對特殊字元進行跳脫變為具有特殊含義的字元 |
$()等價於`` | 強制參照命令, |
顯示原本的特殊字元 |
具體舉例如下:
定義別名baketc,每天手工定期備份/etc目錄下所有的檔案,備份到/testdir獨立子目錄,並要求子目錄格式bakupyyyy-mm-dd,備份過程可見(強參照``)
增加使用者bash、testbash、basher、sh、nologin(shell為/sbin/nologin),找出/etc/passwd檔案中,使用者名稱和shell同名的行
其中.*後面的第一個就是跳脫字元,代表以/string$結尾的字串
剛設定完網絡卡資訊後,發現IP設定錯誤,因此利用history命令中記錄重新設定網絡卡資訊
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-08/146463.htm
相關文章