中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Shell命令行中特殊字符與其轉(zhuǎn)義的示例分析-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)Shell命令行中特殊字符與其轉(zhuǎn)義的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的網(wǎng)站制作、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有廣陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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


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


比如說,如果你的當前目錄有file, file1, file2 三個文件, 那么當你執(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ù)本身, 比如說,你當前目錄下有一個文件的文件名就叫test*, 同時還有另外一個文件, test1. 而你只想看test*的內(nèi)容, 這時候,如果你執(zhí)行


cat test*

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


在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ù)先處理時,將把兩個"`"中間的東西當做shell命令進行執(zhí)行,再將執(zhí)行結(jié)果替換掉他們本身. 舉個例子:

echo today is `date`

將顯示

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

當然,具體的日期跟你執(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目錄

關(guān)于“Shell命令行中特殊字符與其轉(zhuǎn)義的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

當前文章:Shell命令行中特殊字符與其轉(zhuǎn)義的示例分析-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.rwnh.cn/article20/dgsdjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、靜態(tài)網(wǎng)站企業(yè)建站、網(wǎng)站建設(shè)用戶體驗、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
鄂伦春自治旗| 都匀市| 上虞市| 永清县| 靖州| 新沂市| 泸溪县| 宁强县| 德兴市| 电白县| 新乐市| 邵阳市| 洞口县| 固原市| 临猗县| 安泽县| 修水县| 余江县| 呼和浩特市| 涞水县| 卫辉市| 尚义县| 吕梁市| 米林县| 南投县| 淮南市| 淅川县| 图木舒克市| 潼南县| 云林县| 中阳县| 西城区| 淄博市| 鸡泽县| 玛多县| 独山县| 青岛市| 芒康县| 霍州市| 江陵县| 德令哈市|