最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

cat file file1, file2

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

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

cat test*

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

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

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

在上面的例子中,這三種方法都是有效率的,也就是說,下面的三個命令都能達到目的:

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

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

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

echo this is a \
very long \
line

將顯示成

this is a very long line

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

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

echo 'hello
world'

將顯示成

hello
world

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

echo today is `date`

將顯示

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

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

echo 'today is `date`'

將顯示

today is `date`

echo “today is `date`”

將顯示

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

常見的一些特殊字符

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

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

總結(jié)

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

相關(guān)文章

  • shell打印給定日期的日歷

    shell打印給定日期的日歷

    這篇文章主要為大家詳細(xì)介紹了shell打印給定日期的日歷,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 用Shell判斷字符串包含關(guān)系的方法小結(jié)

    用Shell判斷字符串包含關(guān)系的方法小結(jié)

    這篇文章主要給大家介紹了關(guān)于用Shell判斷字符串包含關(guān)系的幾種方法,其中包括利用grep查找、利用字符串運算符、利用通配符、利用case in 語句以及利用替換等方法,每個方法都給出了詳細(xì)的示例代碼與介紹,有需要的朋友們可以參考參考借鑒,下面來一起看看吧。
    2016-12-12
  • 詳解Windows與Linux共享文件夾互相訪問

    詳解Windows與Linux共享文件夾互相訪問

    這篇文章主要介紹了 詳解Windows與Linux共享文件夾互相訪問的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • shell腳本批量將文件復(fù)制到指定的文件夾下

    shell腳本批量將文件復(fù)制到指定的文件夾下

    本文主要介紹了shell腳本批量將文件復(fù)制到指定的文件夾下,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Shell字符串比較相等、不相等方法小結(jié)

    Shell字符串比較相等、不相等方法小結(jié)

    這篇文章主要介紹了Shell字符串比較相等、不相等方法小結(jié),本文直接給出代碼,但代碼中含有大量注釋,需要的朋友可以參考下
    2014-10-10
  • 使用netcat(瑞士軍刀)進行文件傳輸

    使用netcat(瑞士軍刀)進行文件傳輸

    netcat是開源世界的經(jīng)典應(yīng)用之一,被稱為網(wǎng)絡(luò)瑞士軍刀。幾乎所有的發(fā)行版都會帶這個小程序,用它可以在任意兩臺有網(wǎng)絡(luò)鏈接的機器上傳輸文件, 下面我們就來簡單看下他的使用方法吧。
    2016-01-01
  • linux系統(tǒng)mysql自動備份并使用ftp上傳的方法

    linux系統(tǒng)mysql自動備份并使用ftp上傳的方法

    這篇文章主要介紹了linux系統(tǒng)自動導(dǎo)出mysql備份,并上傳到指定ftp,還可以刪除舊的備份文件,大家參考使用吧
    2014-01-01
  • Shell命令解釋器分類示例詳解

    Shell命令解釋器分類示例詳解

    Shell是負(fù)責(zé)User與Linux OS之間溝通的橋梁,Shell為用戶提供了一個操作界面,User在這個界面輸入指令,其實就是通過Shell向Linux Kernel傳遞過去,這也就是為什么Shell也叫解釋器的原因,這篇文章主要給大家介紹了關(guān)于Shell命令解釋器分類的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Shell腳本實現(xiàn)查殺子進程、僵尸進程

    Shell腳本實現(xiàn)查殺子進程、僵尸進程

    這篇文章主要介紹了Shell腳本實現(xiàn)查殺子進程、僵尸進程,本文直接給出實現(xiàn)代碼,實現(xiàn)遞歸找到導(dǎo)致進程僵死的最底層子進程并殺除,需要的朋友可以參考下
    2015-01-01
  • shell之分離解析腳本的實現(xiàn)方法

    shell之分離解析腳本的實現(xiàn)方法

    這篇文章主要介紹了shell之分離解析腳本的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

聊城市| 奉节县| 江口县| 淳安县| 平原县| 张掖市| 长寿区| 鄂托克前旗| 临泽县| 家居| 西平县| 铜山县| 乐清市| 齐河县| 马尔康县| 凉城县| 依兰县| 邛崃市| 扶余县| 浑源县| 韶关市| 新邵县| 黄梅县| 陆丰市| 怀宁县| 修水县| 博客| 宜川县| 治多县| 攀枝花市| 安图县| 永济市| 海伦市| 嵩明县| 彭泽县| 小金县| 淮安市| 彭阳县| 黄浦区| 电白县| 固安县|