linux之shell程式設計

2021-10-09 11:41:37 字數 2390 閱讀 8188

shell你只需要了解這麼多

補充:1.第七部分特殊字元的使用:

特殊字元用在shell指令碼中即可

2.第八部分中轉義字元的理解:

shell命令列中特殊字元與其轉義詳解(去除特殊含義)

這部分主要給大家詳細介紹了shell命令列中特殊字元與其轉義(去除特殊含義)的相關資料,文中介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看吧。

特殊符號及其轉義

大家都知道在乙個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* , 那麼你將看到:

1. cat file file1, file2
上面那條命令,就是經過shell對引數的處理之後,真正執行的命令.

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

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

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

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

三種轉義方法的範圍

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

Linux之Shell程式設計

定義變數 a 100 echo a a 撤銷變數 unset a echo a a 定義靜態變數 readonly b 100 echo b b 將命令的返回值賦值給變數 echo 0 1 2 echo echo echo sh 100 200echo 當前的程序號 後台方式執行 sh sh ech...

Linux之Shell程式設計

shell是乙個命令直譯器,他為使用者提供了乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動 掛起 停止甚至是編寫一些程式 指令碼格式要求 1 指令碼以 bin bash開頭 2 指令碼需要有可執行許可權 指令碼常用的執行方式 方式1 輸入指令碼的絕對路徑或相對...

Linux之shell程式設計基礎

變數在shell中分為 本地變數 環境變數 位置引數 本地變數 僅可在使用者當前shell生命期的指令碼中使用的變數,本地變數隨著shell程序的消亡而無效,本地變數在新啟動的shell中依舊無效,類似於c c 中的區域性變數的概念 環境變數 適用於所有登入程序所產生的子程序 位置引數 用於向she...