理解Linux Shell和基本Shell指令碼語言的小貼士(一)

unblock發表於2014-04-03

圖片勝過文字,下圖概述了Linux的工作:

Understanding-Linux-Shell

 

理解Linux Shell:

shell:一個命令列直譯器,通過執行命令或指令碼,幫助使用者與作業系統打交道。

process:程式,使用者執行的任務是程式,但程式不只是任務。

file:檔案放在硬碟上,包含使用者所有的資料。

x-windows(又稱windows):Linux的一種模式,使螢幕包含多個視窗,讓使用者同時監視多個任務,方便地穿梭於任務之間,它是圖形化的。

text terminal:一種只能顯示文字或簡單圖形的視窗。

session:登入,建立會話;登出,登出會話。

 

標準Linux發行版裡的shell種類:

Bourne Shell:它是早期版本中的一種主要的shell,並且後來成為了標準。由貝爾實驗室的 Stephen Bourne 所寫。每個“類Unix”的系統裡都至少有一種shell與之相容。Bourne Shell 的程式命名為“sh”,一般放在 /bin/sh 。

C shell:由 Bill Joy 為 BSD 版本所寫。它的語法是模仿C語言的。它主要用於互動式操作,有很多互動式命令,而不太常用於寫指令碼。

 

開始玩了!

命令有成千上萬條,都把它們記住,好嗎?額,很明顯那是不行的。計算機的真正用途是簡化你的工作,你需要過程自動化,所以,你需要指令碼。

指令碼是命令的集合,儲存在檔案裡。shell能讀取這些檔案並且執行裡面的命令,就像執行鍵盤發來的命令。shell還提供各種各樣的程式設計特性,使得指令碼真心強大。

 

shell程式設計基礎:

開啟終端,以獲取shell

看下你用著什麼shell,執行:echo $SHELL

在Linux shell中,美元符號$代表一個變數

“echo”命令就是回覆你鍵入任何東西

當需要串聯幾個命令時,管線指令 “|” 就有用了

Linux命令有自己的語法,你的任何錯誤都不會被容忍和接受。如果你寫了條不規範的命令,當然不會如願執行。

#!/bin/sh —— 這個叫環境。這句寫在shell指令碼的首行,使得命令被髮送到 /bin/sh 程式

 

關於shell 指令碼:

shell指令碼就是一個普通的文字檔案,副檔名是  .sh ,且能夠被執行。

 

編寫和執行指令碼:

開啟終端

“cd”命令,去到你想存放該指令碼的地方

cd,回車,使你的提示符變成home目錄

touch hello.sh(這裡我們的指令碼命名為hello,而 .sh 是規定的)

vi hello.sh(nano hello.sh)用你最喜歡的編輯器,我用nano

chmod 744 hello.sh(使指令碼可被執行)

sh hello.sh 或者 ./hello.sh (執行指令碼)

 

編寫你第一個指令碼:

如上所述,將這幾行東西,儲存在文字檔案裡,使之可執行,並執行之。

輸出的樣子:

上面的程式碼解釋如下。

 

編寫你第二個指令碼:

是時候寫下一個了。這個指令碼會說出你的username和列出執行中的process

如上所述,將這幾行東西,儲存在文字檔案裡,檔案叫啥名字都行,但記住副檔名為 .sh ,使之可執行,並執行之。

覺得酷嗎?編寫指令碼就像將想法轉變為流程式命令一樣簡單。通過內建的過濾器和管道功能,shell 指令碼擅長做簡單的檔案系統操作。

當你的需求更復雜,例如是功能、健壯、效能、效率等方面時,你就需要一個全能的語言了。

當你已經熟悉 C、PERL、PYTHON之類時,學習指令碼語言就不覺得難了。

 

編寫你第三個指令碼:

接著,來寫第三個也是本文最後一個指令碼。這個指令碼表現為一個互動式的指令碼,何不親自執行它,說下感覺怎樣?

輸出的樣子:

其實,這事還沒完。我們只不過讓你淺嘗了一下。在未來,我們會全面開展“指令碼”這個話題,它會一直下去,沒有最詳盡,只有更詳盡。各位在評論中的寶貴意見都是可讚的!請支援我們,並幫忙宣傳,保持聯絡,敬請關注!

相關文章