首頁 > 軟體

Linux 萬用字元、元字元和特殊字元詳解

2020-06-16 17:09:15

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


IT145.com E-mail:sddin#qq.com