標籤:enter 總結 允許 使用者 命令 linu 萬用字元 border 資訊
引用符號在解析器中保護特殊元字元和參數擴充,其使用方法有3種:反斜線(\),單引號(’‘),雙引號(“”)。
單引號和雙引號必須匹配使用,均可在解析器中保護特殊元字元和萬用字元,但是單引號(硬轉義)主要用於資訊的原樣輸出,防止任何變數的擴充,雙引號(軟轉義)允許變數擴充、轉義符和命令替換。單引號保護雙引號,雙引號保護單引號。
1. 反斜線
反斜線通過解析器將1個字元轉化為引用符號或轉義。
1)在單引號內使用反斜線,反斜線不會被解析,保持原樣輸出。
2)在雙引號內使用反斜線,主要用於貨幣符號($),反單引號(``),雙引號(""),單引號(‘‘)的輸出,以及轉義符的解析,其中單引號的輸出中,反斜線和雙引號不能同時使用。
3)不使用單引號和雙引號(如:echo \,輸出為空白),則反斜線可以被看做自動忽略。
2. 單引號
1)單引號內不允許任何變數、元字元、萬用字元、轉義符的解析,均被原樣輸出。
2)使用雙引號或反斜線轉義可顯示輸出單引號,但是雙引號和反斜線不能被同時使用。
如命令:echo “\‘”,輸出結果會為(\‘),而不是(‘)
3)可解析Regex,與sed和grep命令配合使用
3. 雙引號
保護特殊元字元和萬用字元不被shell解析,但是允許變數和命令替換,以及轉義符的解析。
4. 附錄
在此順便學習一下linux常見的特殊字元,包括萬用字元、轉義符和元字元。
4.1 萬用字元(wildcard)
萬用字元實際上是一種shell實現的路徑擴充功能,當shell在“參數”中遇到萬用字元後,會將其當做路徑或檔案名稱在磁碟上搜尋可能的匹配,以下表格中列出了比較常用的shell萬用字元,以供大家參考和學習。
字元 |
含義 |
執行個體 |
* |
匹配一個或多個字元 |
a*b a與b之間可以有任意長度的字元 |
? |
匹配任意一個字元 |
a?b a與b之間必須也只能有一個字元 |
[list] |
匹配list中任意單一字元 |
a[xyz]b a與b之間必須也只能有一個[xyz]之間的字元 a[0-9]b a與b之間必須也只能有一個0-9之間的數字字元 a[!0-9]b a與b之間有且只有一個字元,同時字元不能為0-9 |
{string list} |
匹配字串列表中的任一字串 |
a{abc,xyz,123}b a與b之間只能為abc或xyz或123 |
需要說明的是,萬用字元與Regex語句有些相似,但它與Regex不同,只能將其理解為shell特殊字元即可,而且只涉及*,?,[]和{}。
4.2 元字元(Meta)
字元 |
說明 |
; |
命令分隔字元,在前一個命令結束時,忽略其傳回值,繼續執行下一個命令 |
& |
後台運行命令,最大的好處是無需等待命令執行結束,就可以在同一命令列下繼續輸入命令 |
= |
變數名=值,為變數賦值。注意"="左右緊跟變數名和值,中間不要有空格 |
$ |
變數值替換,"$變數名"替換為shell變數的"值",為避免在文本串連時混淆,請使用${變數名} |
> |
輸出重新導向,prog > file 將標準輸出重新導向到檔案(覆蓋原檔案內容) |
>> |
輸出重新導向,prog >> file 將標準輸出追加到檔案 |
< |
輸入重新導向,prog < file 從檔案file中擷取標準輸入 |
| |
管道命令,例:p1 | p2 將p1的標準輸出作為p2的標準輸入 |
() |
在子shell中執行命令,或用於運算,或用於命令替換($(command)) |
{} |
在當前shell中執行命令,或用在變數替換的界定範圍(例如上面的${變數名}用法) |
&& |
前一個命令執行成功後,才繼續執行下一個命令。例:p1 && p2 ,若p1執行成功後,才執行p2,反之,不執行p2 |
|| |
前一個命令執行失敗後,才繼續執行下一個命令。例:p1 || p2 ,若p1執行成功後,不執行p2,反之,才執行p2 |
! |
執行記錄(history列表)中的命令,如!1 |
~ |
使用者主目錄 |
4.3 轉義符
shell提供的轉義符有3中:單引號(‘‘),雙引號(""),反斜線(\)。轉義符已在上述內容中進行了詳細介紹,在此只是對其做一個簡單總結。
字元 |
說明 |
‘‘(單引號) |
硬轉義,其內部所有的shell元字元、萬用字元等都不會被解析,用於參數的原樣輸出。注意,硬轉義中不允許再出現單引號 |
""(雙引號) |
軟轉義,可用於保護元字元和萬用字元,但是允許變數和命令替換的擴充,也允許反斜線轉義符的解析 |
\(反斜線) |
轉義,保護元字元或萬用字元不被shell解析,主要用於雙引號,單引號,反單引號和貨幣符號 |
與echo和sed連用時,常用的反斜線逸出字元如下表所示:
轉義符 |
意義 |
\a |
響鈴字元 |
\b |
後退符,即刪除前一個字元 |
\c |
輸出不換行,與/n作用相反 |
\d |
以“星期、月、日”表示日期 |
\f |
換行,但游標仍停留在原處 |
\h或\H |
顯示基本主機名稱或顯示完整的主機名稱 |
\t或\T |
24小時或12小時制時間 |
\n |
輸出換行 |
\r |
游標移至行首,並且不換行 |
\s |
當前shell的名稱,如bash |
\t |
插入Tab鍵 |
\u |
當前登入shell的使用者名稱 |
\v |
Bash版本 |
\w |
當前工作目錄 |
\W |
當前工作目錄的基名 |
\\ |
反斜線\\,有無雙引號,結果相同 |
\$ |
貨幣符號$,有無雙引號,結果相同 |
\" |
雙引號“,有無雙引號,結果相同 |
\‘ |
單引號’,不能與雙引號同時使用 |
\` |
反單引號`,有無雙引號,結果相同 |
\nnn |
插入八進位所代表的ASCII字元 |
每日linux命令學習-引用符號(反斜線\,單引號'',雙引號"")