国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

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

2019-10-26 18:50:45
字體:
來源:轉載
供稿:網友

特殊符號及其轉義

大家都知道在一個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中,特殊字符的轉義有三種辦法

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

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

    cat test/* cat 'test*' cat “test*”

三種轉義方法的范圍

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

echo this is a /very long /line

將顯示成

this is a very long line

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栖霞市| 渭南市| 兴化市| 通海县| 海宁市| 凯里市| 望谟县| 大方县| 牡丹江市| 珠海市| 北海市| 普定县| 龙岩市| 康保县| 丁青县| 万州区| 柘城县| 四平市| 娱乐| 武川县| 荥经县| 巴中市| 金塔县| 襄垣县| 南城县| 中江县| 东方市| 丘北县| 托里县| 锡林郭勒盟| 开封县| 竹山县| 大同市| 阜平县| 乐都县| 绥芬河市| 马龙县| 鹿泉市| 鲁山县| 微山县| 望奎县|