天天看點

Shell中常用的引号

Shell之引号

在Shell中經常會使用到單引号、雙引号、反引号(鍵盤中Tab鍵上方的按鍵)、反斜線(轉換某些Shell元字元的含義)。如我們有時希望echo指令輸出的字元中就包含$符号本身,但一般情況下,Shell會将$視為取變量值,像這樣的情況我們需要使用某些功能來屏蔽$符号本身的特殊含義,使其還原字面意義。

1. 反斜線

反斜線可以将緊随其後的單個字元視為字面意義上的字元,如*在Shell中代表任意字元,在查找時經常會使用*來查找多個比對的檔案,然而有可能你需要找的就是*字元本身,此時,\*将會把*作為字母意義上的普通字元。

另外,如果在指令的末尾使用\回車後,\可以将回車的指令送出功能屏蔽,進而将回車認為是換行繼續輸入指令,實作指令的多行輸入功能。

[root@centos7 ~]# echo *                        #顯示目前目錄的所有檔案清單

anaconda-ks.cfginstall.log install.log.syslog

[root@centos7 ~]# echo \*                       #顯示*字元

*

[root@centos7 ~]# echo \>                       #顯示>符号

> 

[root@centos7 ~]# find / \                      #換行輸入多行指令

> -name"test.txt" \

> -type f\

> -size+5M

    2. 單引号

單引号可以将它中間的所有任意字元還原為字面意義,實作屏蔽Shell元字元的功能。注意,不可以在兩個單引号中間單獨插入一個單引号,單引号必須成對出現。

[root@centos7 ~]# echo '$HOME'                  #單引号将屏蔽$的特殊功能

$HOME

[root@centos7 ~]# echo ’test\’                  #預設\為轉義換行,這裡也被屏蔽

test\

    3. 雙引号

雙引号類似于單引号,但其不會屏蔽 `、\和$ 這樣的元字元含義,如果需要屏蔽這些字元含義,必須前置一個\符号,其他字元的功能将被屏蔽(包括單引号)。也就是說,兩個雙引号之間的單引号不必成對出現。

[root@centos7 ~]# echo "This's book."

This's book.

[root@centos7 ~]# echo "$HOME"

/root

[root@centos7 ~]# echo "\$HOME"

    4. 反引号

Shell中使用反引号進行指令替換,指令替換使Shell可以将指令字元替換為指令執行結果的輸出内容。同樣的功能也可以使用$()來實作。

[root@centos7 ~]# echo "Today is `date +%D`"

Today is 02/09/13

[root@centos7 ~]# echo "Today is $(date +%D)"

本文轉自丁丁曆險51CTO部落格,原文連結: http://blog.51cto.com/manual/1897846,如需轉載請自行聯系原作者