婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Shell命令行中特殊字符與其轉義詳解(去除特殊含義)

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

熱門標簽:外呼電話系統怎么操作 測繪地圖標注名稱 商機地圖標注 百度地圖標注直線距離 怎么在百度地圖標注公司的位置 天津電話外呼系統排名 德陽400電話申請 智能電銷機器人有用嗎 鶴崗400電話申請

特殊符號及其轉義

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

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

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

cat file file1, file2

上面那條命令,就是經過shell對參數的處理之后,真正執行的命令.

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

cat test*

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

在shell中,特殊字符的轉義有三種辦法

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

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

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

三種轉義方法的范圍

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

echo this is a \

very long \

line

將顯示成

this is a very long line

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

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

echo 'hello
world'

將顯示成

hello
world

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

echo today is `date`

將顯示

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

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

echo 'today is `date`'

將顯示

today is `date`

echo “today is `date`”

將顯示

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

常見的一些特殊字符

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

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

總結

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

您可能感興趣的文章:
  • shell腳本中28個特殊字符的作用簡明總結
  • Shell腳本中的特殊字符(美元符、反斜杠、引號等)作用介紹
  • Shell腳本中的位置變量參數(特殊字符)實例講解
  • Linux Shell中的特殊符號和含義簡明總結(包含了絕大部份)
  • shell腳本中常見的一些特殊符號和作用詳解
  • linux shell中的比較符號與特殊符號介紹
  • shell中冒號的特殊用法分享
  • shell腳本中一些特殊符號
  • Shell中特殊字符的用法總結大全

標簽:滁州 百色 優質小號 武漢 丹東 六盤水 自貢 鎮江

巨人網絡通訊聲明:本文標題《Shell命令行中特殊字符與其轉義詳解(去除特殊含義)》,本文關鍵詞  Shell,命令,行中,特殊,字符,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell命令行中特殊字符與其轉義詳解(去除特殊含義)》相關的同類信息!
  • 本頁收集關于Shell命令行中特殊字符與其轉義詳解(去除特殊含義)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 锡林浩特市| 镇平县| 区。| 临颍县| 白山市| 东兰县| 吉隆县| 永胜县| 彭山县| 卓尼县| 伊宁市| 财经| 手游| 合阳县| 长白| 贺州市| 泸定县| 松滋市| 中西区| 海宁市| 新民市| 新田县| 浦北县| 萨迦县| 乌鲁木齐市| 马边| 阳新县| 山阳县| 密云县| 玉林市| 汽车| 政和县| 呼图壁县| 当涂县| 平湖市| 安化县| 丹寨县| 龙陵县| 石棉县| 鲜城| 穆棱市|