1. 程式人生 > >linux命令學習-引用符號(反斜杠,單引號'',雙引號"")

linux命令學習-引用符號(反斜杠,單引號'',雙引號"")

標準 當前 asc 主機名 command 日期 ring 結果 後退

引用符號在解析器中保護特殊元字符和參數擴展,其使用方法有3種:反斜杠(\),單引號(’‘),雙引號(“”)

單引號和雙引號必須匹配使用,均可在解析器中保護特殊元字符和通配符,但是單引號(硬轉義)主要用於信息的原樣輸出,防止任何變量的擴展,雙引號(軟轉義)允許變量擴展、轉義符和命令替換。單引號保護雙引號,雙引號保護單引號。

1. 反斜杠

反斜杠通過解析器將1個字符轉化為引用符號或轉義。

1)在單引號內使用反斜杠,反斜杠不會被解析,保持原樣輸出。

2)在雙引號內使用反斜杠,主要用於美元符號($),反單引號(``),雙引號(""),單引號(‘‘)的輸出,以及轉義符的解析,其中單引號的輸出中,反斜杠和雙引號不能同時使用。

3)不使用單引號和雙引號(如:echo \,輸出為空),則反斜杠可以被看做自動忽略。

2. 單引號

1)單引號內不允許任何變量、元字符、通配符、轉義符的解析,均被原樣輸出。

2)使用雙引號或反斜杠轉義可顯示輸出單引號,但是雙引號和反斜杠不能被同時使用。

如命令:echo “\‘”,輸出結果會為(\‘),而不是(‘)

3)可解析正則表達式,與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

需要說明的是,通配符與正則表達式語句有些相似,但它與正則表達式不同,只能將其理解為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命令學習-引用符號(反斜杠\,單引號'',雙引號"")