1. 程式人生 > >萬用字元、元字元、轉義符

萬用字元、元字元、轉義符

一、Linux shell萬用字元(wildcard)

萬用字元是由shell處理的(不是由所涉及到命令語句處理的,其實我們在shell各個命令中也沒有發現有這些萬用字元介紹), 它只會出現在命令的“引數”裡(它不用在命令名稱裡,也不用在操作符上)。當shell在“引數”中遇到了萬用字元時,shell會將其當作路徑或檔名去在磁碟上搜尋可能的匹配:若符合要求的匹配存在,則進行替換(路徑擴充套件);否則就將該萬用字元作為一個普通字元傳遞給“命令”,然後再由命令進行處理。

總之,萬用字元實際上就是一種shell實現的路徑擴充套件功能。在萬用字元被處理後, shell會先完成該命令的重組,然後再繼續處理重組後的命令,直至執行該命令。

例如以下命令:

[[email protected] wildcard]# ls
a.htm  b.htm
[[email protected] wildcard]# ls *.htm
a.htm  b.htm
[[email protected] wildcard]# ls d*.htm
ls: d*.htm: 沒有那個檔案或目錄

分析如下:

第2個命令中,對於引數*.htm,shell在當前目錄下能搜尋到相匹配檔案,會換成a.htm b.htm。實際執行的是ls a.htm b.htm命令。

第3個命令,對於引數d*.htm, shell在當前目錄找不到相匹配的檔案,則直接將d*.htm作為ls引數,實際執行的是ls d*.htm。由於找不到該檔案,所以會出現:沒有那個檔案或目錄。

瞭解了shell萬用字元,我們現在看下,shell常見萬用字元有那一些了。

shell萬用字元  

字元 含義 例項
 *  匹配0或多個字元  a*b  a與b之間可以有任意長度的任意字元, 也可以一個也沒有, 如aabcb, a01b, ab等
 ?  匹配任意一個字元  a?b  a與b之間有且只有一個字元, 可以是任意字元, 如aab, adb, a0b等
 [list]  匹配list中的任意單一字元  a[xyz]b  a與b之間有且只有一個字元, 且只能是x或y或z, 如: axb, ayb, azb。
 [!list]  匹配除list中的任意單一字元  a[!0-9]b  a與b之間有且只有一個字元, 但不能是數字, 如axb, aab, a-b等
 [c1-c2]  匹配c1-c2中的任意單一字元  a[0-9]b  a與b之間有且只有一個字元,該字元是0-9之間的數字,如a0b, a1b,... ,a9b。
 {string1,string2,...}  匹配 sring1 或 string2 (或更多)其一字串  a{abc,xyz,123}b    a與b之間只能是abc或xyz或123這三個字串之一。

需要說明的是:萬用字元看起來有點象正則表示式語句,但是它與正則表示式不同的,不能相互混淆。把萬用字元理解為shell特殊代號字元就可。

二、shell元字元

shell除了有萬用字元之外,由shell負責預先先解析後,將處理結果傳給命令列之外,shell還有一系列自己的其他特殊字元。

shell元字元

字元 說明
 =  變數名=值,為變數賦值。注意=左右緊跟變數名和值,中間不要有空格
 $  變數值替換,$變數名替換為shell變數的值;為避免在文字連線時混淆,請使用${變數名};$0...$9 代表shell檔案的引數。
 >  prog > file 將標準輸出重定向到檔案。
 >>  prog >> file 將標準輸出追加到檔案。
 <  prog < file 從檔案file中獲取標準輸入
 |  管道命令,例:p1 | p2 將p1的標準輸出作為p2的標準輸入
 &  後臺執行命令,最大好處是無需等待命令執行結束,就可以在同一命令列下繼續輸入命令
 ()  在子shell中執行命令
 {}  在當前shell中執行命令,或用在變數替換的界定範圍(例如上面的${變數名}用法)。
 ;  命令結束符。例如p1;p2表示先執行p1,再執行p2
 &&  前一個命令執行成功後,才繼續執行下一個命令。例:p1 && p2 ;若p1執行成功後,才執行p2,反之,不執行p2;
 ||  前一個命令執行失敗後,才繼續執行下一個命令。例:p1 || p2 ;若p1執行成功後,不執行p2,反之,才執行p2;
 !  執行歷史記錄中的命令
 ~  home目錄

三、shell轉義符

有時候,我們想讓萬用字元,或者元字元變成普通字元。那麼這裡我們就需要用到轉義符了。 shell提供轉義符有三種。

shell轉義字元

字元 說明
 ''  單引號,硬轉義,其內部所有的shell元字元、萬用字元都會被關掉。注意,硬轉義中不允許出現’(單引號)。
 ""  雙引號,軟轉義,其內部只允許出現特定的shell元字元($,`,\):$用於變數值替換、`用於命令替換、\用於轉義單個字元
 \  反斜槓,轉義,去除其後緊跟的元字元或萬用字元的特殊意義。

相關推薦

第二天筆記-選擇器(標籤選擇器類選擇器css命名規範谷歌案例多類名選擇器id選擇器字元選擇器偽類選擇器)

四、選擇器 要想將CSS樣式應用於持定的HTML元素,首先需要找到該目標元素。在CSS中,執行這一任務的樣式規則部分則成為選擇器(選擇符)。 (一)標籤選擇器(元素選擇器) 標籤選擇器是隻用於HTML標籤名作為選擇器,按標籤名分類,為頁面中某一類標籤指定統

CSS之字元選擇器複合選擇器

一、萬用字元選擇器 1、 2、 執行結果:作用於所有的標籤,所有文字顏色都變成了紅色 二、符合選擇器 1、複合選擇器就是把上面的幾個單獨的基本選擇器混合來使用 2、 ① ② 3、 4、 ② ③ 5、 ① ② 6、

sql like語句中的字元:百分號下劃線和escape

# %代表任意多個字元    select * fromuserwhere username like'%huxiao';  select * fromuserwhere username like'huxiao%';  select * fromuserwhere

Linux Shell 字元元字元轉義

說到shell萬用字元(wildcard),大家在使用時候會經常用到。下面是一個例項: [[email protected] ~/shell]$ ls a.txt b.txt c.old [[email protected] ~/she

字元元字元轉義

一、Linux shell萬用字元(wildcard) 萬用字元是由shell處理的(不是由所涉及到命令語句處理的,其實我們在shell各個命令中也沒有發現有這些萬用字元介紹), 它只會出現在命令的“引數”裡(它不用在命令名稱裡,也不用在操作符上)。當shell在“引數

SQL中like語句字元轉義與括號的使用

https://blog.csdn.net/kpchen_0508/article/details/45167481 可以搜尋萬用字元字元。有兩種方法可指定平常用作萬用字元的字元: 使用 ESCAPE 關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字

bash的基本功能(重定向管道字元

輸出重定向 注:linux中一切皆檔案,為方便記憶,在sh中以0,1,2分別表示這三種輸入輸出 管道符 注: 1. 可通過data;

分享知識-快樂自己:Struts2(動態方法動態結果字元方法內部跳轉action跳轉OGNL 的使用及注意事項)

這裡主要以案例演示:涵蓋以下知識點 1、動態方法呼叫:使用關鍵 符號 ! 進行操作   例如:/名稱空間 ! 方法名 2、動態結果集:就是說,通過後臺返回的結果 ${} 獲取,重定向到符合預期的頁面。 3、萬能萬用字元:*_*  :第一個 * 為 類名、第二個 * 為方

day26基礎加強(泛型字元註解反射 註解使用)

泛型 1、具有一個或多個泛型變數的型別被稱之為泛型類 class A<T>{} 2、在建立泛型類例項時,需要為其型別變數賦值 A<String> a = new A<String>(); 如果建立例項時,不給型別變數賦值,那麼會有一個警告。 3

Linux 命令列字元轉義的實現

我們想對一類檔案批量操作,例如批量檢視硬碟檔案屬性,那麼正常命令會是: [[email protected] ~]# ls /dev/sda [[email protected] ~]# ls /dev/sda1 [[email protected] ~]# l

單域名版多域名版和字元版SSL證書之間的區別

本博主轉載前必先親自考證,深惡痛絕百度CP之流,有問題請與我聯絡。 單域名版SSL證書 顧名思義,只保護一個域名,這些域名形如 www.yuming.com;pay.domain.net;shop.store.cn 等; 值得注意的有兩點: 1、當您位 www 字首的域名申請證書的時

泛型上下界字元

宣告:本人最近特忙,此篇部落格發得很倉促;等後面閒下來了,本人會再次深入學習並演示泛型。 泛型程式設計(Generic Programming)意味著編寫的程式碼可以被很多不同型別的物件所重用。即:將一些可以進行相同操作的類或元素等進行抽象化,為其共有的特性寫一個通用的

泛型——(3) 泛型的字元上限與下限

萬用字元: “?”  萬用字元就是當集合中的型別不確定時,可以用“?” 萬用字元來代替表示。這樣任意型別都能進入集合。 package cn.itcast.p5.generic.advance.demo; import java.util.ArrayList; impo

泛型上下界字元介紹

<? extends T>和<? super T>的英文Java的泛型中的“萬用字元(萬用字元)”和“邊界(邊界)”的概念。 <?擴充套件T>:是指  “上界萬用字元(Upper Bounds Wildcards)” <?super

Javaweb學習筆記——(二十七)——————泛型泛型的字元反射泛型資訊反射註解註解

泛型     1.泛型類:具有一個或多個型別變數的類,稱之為泛型類     class A<T>{     }     2.在建立泛型例項時,需要為其型別變數賦值     A<String> a = new A<String>();

elasticsearch-wildcardregexp字元與正則表示式查詢

萬用字元與正則表示式查詢 假設將郵編作為 not_analyzed 的精確值欄位索引,所以可以為其建立索引,如下: PUT /my_index { "mappings": { "address": { "properties

Elasticsearch-字首字元正則模糊搜尋詳解

1.對於字首的匹配搜尋: GET /forum/article/_search { "query": { "prefix": { "articleID": { "value": "J" } }

jquery基本選擇器:id選擇器class選擇器標籤選擇器字元選擇器

全棧工程師開發手冊 (作者:欒鵬) jquery基本選擇器 jquery基本選擇器,包括id選擇器、class選擇器、標籤選擇器、萬用字元選擇器,同時配合選擇器的空格、逗號等語法,可以實

java基礎總結 --- 泛型 擦除邊界字元

* 擦除的問題 * 為什麼要擦除: 1.5版本才出現泛型 為了相容之前地程式碼 * 它使得泛化的客戶端可以用非泛化的類庫來使用。 * 以及不破壞現有類庫的情況下,將泛型融入java語言。 * 擦除使得現有的非泛型客戶端程式碼能夠在不改變的情況繼續使用,直至客戶端準

MySQL:05---DQL單表查詢(指定多條件between..andlike字元空值limit去重合並查詢)

一、查詢指定欄位 1. 查詢所有欄位 select  *  from  表名; 2.查詢指定欄位 select  欄位1,欄位2...   from  表名; 二、條件查詢 概念:條件查詢可通過wher