欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell命令行中特殊字符與其轉(zhuǎn)義詳解(去除特殊含義)

 更新時(shí)間:2017年02月12日 10:53:17   作者:小創(chuàng)  
這篇文章主要給大家詳細(xì)介紹了Shell命令行中特殊字符與其轉(zhuǎn)義(去除特殊含義)的相關(guān)資料,文中介紹的很詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看吧。

特殊符號(hào)及其轉(zhuǎn)義

大家都知道在一個(gè)shell命令是由命令名和它的參數(shù)組成的, 比如 cat testfile, 其中cat是命令名, testfile是參數(shù). shell將參數(shù)testfile傳遞給cat命令. 但是, 如果參數(shù)中含有特殊字符, 比如說(shuō)*, *我們知道,是表示任意多個(gè)(包括0個(gè))任意字符. 那么shell的工作方式是,它會(huì)對(duì)這些特殊字符進(jìn)行預(yù)先處理, 然后再將處理的結(jié)果傳給那個(gè)命令.

比如說(shuō),如果你的當(dāng)前目錄有file, file1, file2 三個(gè)文件, 那么當(dāng)你執(zhí)行cat file*的時(shí)候, shell會(huì)對(duì)參數(shù)部分file*進(jìn)行預(yù)先處理, 由于*表示任意多個(gè)(包括0個(gè))任意字符,那么處理的結(jié)果便是file file1 file2,接下來(lái),shell再將這個(gè)結(jié)果, 即file file1 file2傳遞給cat命令, 所以你看到的結(jié)果跟直接執(zhí)行cat file file1 file2是一樣的, 那就是三個(gè)文件的內(nèi)容都顯示在命令行終端.

實(shí)際上,我們有辦法看到shell處理的結(jié)果是什么,或者說(shuō)真正執(zhí)行的命令是什么樣子的, 那就是在你要執(zhí)行的命令之前加上echo.
比如說(shuō),在上面的目錄下,你執(zhí)行echo cat file* ,  那么你將看到

cat file file1, file2

上面那條命令,就是經(jīng)過(guò)shell對(duì)參數(shù)的處理之后,真正執(zhí)行的命令.

但是很多時(shí)候,我們希望傳遞給這些命令的,就是這些參數(shù)本身, 比如說(shuō),你當(dāng)前目錄下有一個(gè)文件的文件名就叫test*, 同時(shí)還有另外一個(gè)文件, test1. 而你只想看test*的內(nèi)容, 這時(shí)候,如果你執(zhí)行

cat test*

的話,那么test*和test1的內(nèi)容都會(huì)被顯示出來(lái),這時(shí)候怎么辦呢? 這里就涉及到特殊字符的轉(zhuǎn)義(escape)的問(wèn)題了.所謂的轉(zhuǎn)義,意思就是去掉它的特殊含義.讓shell把他們當(dāng)做一般字符對(duì)待,不要進(jìn)行特殊處理.

在shell中,特殊字符的轉(zhuǎn)義有三種辦法

  1. 用\轉(zhuǎn)義: 把\字符放在特殊字符的前面
  2. 用單引號(hào)('')轉(zhuǎn)義: 用單引號(hào)把參數(shù)括起來(lái)
  3. 用雙引號(hào)("")轉(zhuǎn)義: 用雙引號(hào)把參數(shù)括起來(lái)

在上面的例子中,這三種方法都是有效率的,也就是說(shuō),下面的三個(gè)命令都能達(dá)到目的:

  1. cat test\*
  2. cat 'test*'
  3. cat “test*”

三種轉(zhuǎn)義方法的范圍

在shell中,特殊字符是非常多的,而以上提到的三種轉(zhuǎn)義方法的范圍也不盡相同,其中第一種方法的范圍是最廣的,幾乎可以對(duì)所有的特殊字符進(jìn)行轉(zhuǎn)義,常見(jiàn)的用法是把\放在一個(gè)命令行的最后,這樣一個(gè)很長(zhǎng)的命令就可以分為兩行或者更多行寫(xiě). 比如

echo this is a \
very long \
line

將顯示成

this is a very long line

在這里,其實(shí)就是\把換行符轉(zhuǎn)義了,讓它失去了換行的意思,同時(shí)阻止命令立刻執(zhí)行.

第二種轉(zhuǎn)義(單引號(hào))的范圍比第一種小,它可以阻止命令行立刻執(zhí)行,但是它不能讓換行符失去換行的意思. 所以

echo 'hello
world'

將顯示成

hello
world

第三種轉(zhuǎn)義(雙引號(hào))的范圍又比第二種小,單引號(hào)可以轉(zhuǎn)義"`", 而雙引號(hào)不行. 在shell中, "`"中間的東西將被視為命令替換. shell對(duì)參數(shù)進(jìn)行預(yù)先處理時(shí),將把兩個(gè)"`"中間的東西當(dāng)做shell命令進(jìn)行執(zhí)行,再將執(zhí)行結(jié)果替換掉他們本身. 舉個(gè)例子:

echo today is `date`

將顯示

today is Mon Oct 12 16:14:16 CST 2015

當(dāng)然,具體的日期跟你執(zhí)行這條命令的時(shí)期有關(guān). 總之,意思你應(yīng)該明白了. 再回到原來(lái)的問(wèn)題,我們說(shuō)單引號(hào)可以轉(zhuǎn)義"`", 而雙引號(hào)不行, 意思就是,單引號(hào)之間的"`"將失去它的特殊含義,而雙引號(hào)之間的"`"將依然有特殊含義,所以

echo 'today is `date`'

將顯示

today is `date`

echo “today is `date`”

將顯示

today is Mon Oct 12 16:23:23 CST 2015

常見(jiàn)的一些特殊字符

  1. * 任意個(gè)任意字符
  2. ? 一個(gè)任意字符
  3. [..] []中的任意一個(gè)字符,這里也類似于正則表達(dá)式,中括號(hào)內(nèi)可以是具體的一些字符,如[abcd]也可以是用-指定的一個(gè)范圍,如[a-d]
  4. # 注釋
  5. (空格) 參數(shù)分隔符
  6. cmd 命令替換
  7. | 管道
  8. & 后臺(tái)執(zhí)行
  9. ; 命令分隔符(可以在同一行執(zhí)行兩個(gè)命令,用;分割)
  10. ~ 用戶home目錄

最后記得,任何時(shí)候,你不確定自己是不是轉(zhuǎn)義對(duì)了,或者是特殊字符用對(duì)了,記得可以在命令前面加上echo,來(lái)看看真實(shí)執(zhí)行的命令是怎么樣的.

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • shell腳本實(shí)現(xiàn)的網(wǎng)站日志分析統(tǒng)計(jì)(可以統(tǒng)計(jì)9種數(shù)據(jù))

    shell腳本實(shí)現(xiàn)的網(wǎng)站日志分析統(tǒng)計(jì)(可以統(tǒng)計(jì)9種數(shù)據(jù))

    這篇文章主要介紹了shell腳本實(shí)現(xiàn)的網(wǎng)站日志分析統(tǒng)計(jì),可以統(tǒng)計(jì)9種數(shù)據(jù),如訪問(wèn)量、帶寬、訪客量、IP統(tǒng)計(jì)、搜索引擎等,需要的朋友可以參考下
    2014-05-05
  • 詳解Sed命令的用法與正則表達(dá)式元字符

    詳解Sed命令的用法與正則表達(dá)式元字符

    sed是一種流編輯器,它是文本處理中非常有用的工具,能夠完美的配合正則表達(dá)式使用,功能不同凡響。這篇文章主要介紹了Sed命令使用與正則表達(dá)式元字符,需要的朋友可以參考下
    2017-12-12
  • 一個(gè)簡(jiǎn)單的linux命令 tail

    一個(gè)簡(jiǎn)單的linux命令 tail

    這篇文章主要介紹了一個(gè)簡(jiǎn)單的linux命令tail,tail命令用來(lái)從指定點(diǎn)開(kāi)始將文件寫(xiě)到標(biāo)準(zhǔn)輸出,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • linux下開(kāi)啟php的sockets擴(kuò)展支持實(shí)例

    linux下開(kāi)啟php的sockets擴(kuò)展支持實(shí)例

    下面小編就為大家?guī)?lái)一篇linux下開(kāi)啟php的sockets擴(kuò)展支持實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Linux Vim 實(shí)用命令詳解

    Linux Vim 實(shí)用命令詳解

    這篇文章主要介紹了Linux Vim 實(shí)用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • shell 里面的奇葩字符實(shí)現(xiàn)

    shell 里面的奇葩字符實(shí)現(xiàn)

    這篇文章主要介紹了shell 里面的奇葩字符實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法

    利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法

    這篇文章主要介紹了利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法,即不輸入密碼執(zhí)行sudo命令方法,需要的朋友可以參考下
    2014-03-03
  • shell常用重定向?qū)嵗v解

    shell常用重定向?qū)嵗v解

    這篇文章主要介紹了shell常用重定向?qū)嵗v解,I/O(輸入/輸出)常用的重定向命令詳細(xì)介紹,需要的朋友可以參考下
    2014-07-07
  • Linux修改主機(jī)名的命令詳解

    Linux修改主機(jī)名的命令詳解

    通常在購(gòu)買的服務(wù)器或者一些新安裝的Linux系統(tǒng)主機(jī)名是一個(gè)隨機(jī)的字符串,但是如果說(shuō)我們想標(biāo)識(shí)一下每臺(tái)主機(jī)的名稱,我們就可以修改一下主機(jī)名,所以本文給大家介紹了Linux修改主機(jī)名的命令,需要的朋友可以參考下
    2024-01-01
  • 設(shè)置Linux系統(tǒng)的空閑等待時(shí)間TMOUT的方法

    設(shè)置Linux系統(tǒng)的空閑等待時(shí)間TMOUT的方法

    下面小編就為大家?guī)?lái)一篇設(shè)置Linux系統(tǒng)的空閑等待時(shí)間TMOUT的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論