linux命令 引用符號

2021-08-20 20:34:06 字數 2668 閱讀 8199

引用符號在解析器中保護特殊元字元和引數擴充套件,其使用方法有3種:反斜槓(\),單引號(』『),雙引號(「」)

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

1. 反斜槓

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

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

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

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

2. 單引號

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

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

如命令:echo 「\'」,輸出結果會為(\'),而不是(')

3)可解析正規表示式,與sed和grep命令配合使用

3. 雙引號

保護特殊元字元和萬用字元不被shell解析,但是允許變數和命令替換,以及轉義符的解析。

4. 附錄

在此順便學習一下linux常見的特殊字元,包括萬用字元、轉義符和元字元。

4.1 萬用字元(wildcard)

字元含義例項*

匹配乙個或多個字元

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

匹配字串列表中的任一字串

ab 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的使用者名稱

\vbash版本

\w當前工作目錄

\w當前工作目錄的基名

\\反斜槓\\,有無雙引號,結果相同

\$美元符號$,有無雙引號,結果相同

\"雙引號「,有無雙引號,結果相同

\'單引號』,不能與雙引號同時使用

\`反單引號`,有無雙引號,結果相同

\nnn

插入八進位製所代表的ascii字元

Linux 符號命令及符號問題

1 回車 r 本義是游標重新回到本行開頭,r的英文return,控制字元可以寫成 cr,即 carriage return 換行 n 本義是游標往下一行 不一定到下一行行首 n 的英文 newline,控制字元可以寫成 lf,即 line feed。2 windows下,記事本不支援 n 換行,它只...

bash 命令列 歷史命令 命令別名 引用符號

bash 一些用法 shell 子shell bash 1.命令歷史 命令不全 2.管道 重定向 3.命令別名 4.命令列編輯 5.命令名展開 6.檔名通配 7.變數 8.程式設計,指令碼游標跳 ctrl a 跳到命令列首 ctrl e 跳到命令行尾 ctrl u 刪除游標至命令列首的內容 ctrl...

弱符號與強符號,弱引用與強引用

對c c 而言,編譯器預設函式和初始化了的全域性變數為強符號。未初始化的全域性變數為弱符號。此處弱符號與強符號均是針對定義來說的,不是針對符號的引用。也可以通過gcc的 attribute weak 來定義任何乙個強符號為弱符號。cpp view plain copy extern in ext i...