Linux作業系統之Shell程式設計
Shell 是種命令解釋程式,也可以看作是一種命令語言的直譯器。 使用者在與Shell互動時所輸入的命令列必須符合Shell命令的語法和語義規範,才能夠被Shell理解並執行。Shell所使用的這種命令語言稱為Shell 語言。Shell語言不僅僅是一種互動式語言, 它還是一種可程式設計的程式設計語言。將若干個Shell命令列寫入個檔案就構成了一個Shell程式,它可以被Shell逐條地解釋執行。用Shell語言編寫的Shell程式可以使用各種變數、引數和控制結構來組織命令流程,自動化地完成各種複雜冗繁的處理工作。
Linux 系統中廣泛使用了Shell程式來實現系統的初啟、配置、管理和維護等工作。因此,熟練掌握Shell語言可以更加深入地理解系統的執行機制,更加有效地使用和管理系統。
Shell 語言的特點:
與其他程式語言相比,Shell 語言具有如下特點:
(1) Shell 是一種解釋性語言。這就是說,用Shell語言寫的程式不需編譯,可以直接由Shell程式解釋執行。解釋性語言的特點是快捷方便,可以即編即用,但與編譯性語言的目標程式來比,解釋性語言程式的執行速度要低一些。
(2) Shell 是基於字串的語言。Shell 只是做字串處理,不支援複雜的資料結構和運算。Shell 的輸出也全部是字元方式的。
(3) Shell 是命令級語言。Shell 程式全部由命令而不是語句組成,幾乎所有的Shell命令和可執行程式都可用來編寫Shell程式。Shell命令十分豐富,命令的組合功能也十分強大。所以,用簡單的命令和命令組合形成的Shell程式即簡潔又高效,可以實現各種複雜的功能。另外需要說明的是,不同版本的Shell程式不完全相容,差別可能是細微的,也可能是明顯的。
Shell 程式也稱Shell指令碼(script),是由一系列 Shell命令為基本元素構成的文字檔案。簡單的Shell程式可以只是一個命令序列,高階Shell程式中還可以包含複雜的命令組合,定義各種引數和變數、使用條件命令、控制結構以及其他高階特性。
Shell 程式的建立與執行
Shell 指令碼文是文字檔案,因此可以用任何文字編輯器(如vi, emacs等)建立和編輯指令碼。Shell指令碼檔案的名稱沒有限定的擴充名,通常不帶擴充名或者帶“.sh”擴充名。
Shell 指令碼的執行方式主要有3種。
(1) 將指令碼作為可執行檔案執行:
1. $ chmod a+x hello
2. $ ./hello
用文字編輯器生成的指令碼檔案預設是沒有x許可權的,也就是說是不可直接執行的。賦予x許可權後,指令碼就可以像一般的 Shell命令那樣執行了。如果指令碼不在系統存放命令的標準目錄下,需要在執行時指定指令碼的路徑。上例中指令碼hllo放在當前目錄下,所以要用.hello來執行。
(2) 啟動一一個Shell子程式來執行指令碼檔案:
1. $ bash hello # 或 bash < hello
執行此命令列時,Shell 程式先啟動一個bash子程式,讓它執行hello指令碼的內容,執行完畢後bash子程式也終止。在這種方式中,指令碼是作為命令引數傳給子Shell 的。子Shell執行時讀取該檔案並執行其內容,因此指令碼檔案不必有執行許可權。這種方法常用於執行一個其他版本的Sbell指令碼。假如當前Shell是bash,而chello是用C Shell語言寫的指令碼,則要執行這個指令碼時可以用csh chello命令啟動一個csh程式來執行它。
(3) 讓當前Shell程式執行指令碼檔案:
1. $.hello
“.” 是一個shell內部命令,hello是它的引數。命令的功能是讀取引數指定的檔案,執行其內容。這種執行方式與第2種方式類似,區別在於此方式是由當前Shell程式來執行指令碼檔案的。
前面大致簡介了一下什麼是Shell指令碼,它有什麼特點,做什麼用的,想必現在大家對這個有了一定程度的瞭解,當然這只是學習Linux作業系統中所接觸到的冰山一角,想要學好Linux作業系統,就必須學好Shell,那怎麼樣才能學好Shell呢?我們先看一個簡單的Shell程式:
1. $ cat hello # hello program
2. # this is a shell script to say hello
3. echo Hello World!
4. echo -n “Today is ”
5. date “+%A,%B %d,%Y.”
6. $.hello # run
7. Hello World!
8. Today is Sunday, July 15, 2018.
9. $_
這個hello程式的第二行是註釋,後面3行是命令,在執行程式時,shell依次執行這3個命令,並輸出顯示資訊。這就是一個簡單的hello world程式碼,幾乎所有的程式設計師學習如何編寫程式碼都是從這裡起家的。
學習linux運維,這是必經之路,不知道各位讀者是自學呢,還是在校老師教導,不過在我看來,學習技術還是的有一個完整的體系,前幾天逛網頁,看到一個關於linux學習的網站,叫linuxprobe,配套有書籍叫 《Linux 就該這麼學》 ,進去瞄了一眼,感覺還不錯,裡面的知識架構很好,如果各位有興趣可以一閱!不管你學不學,資料就在哪裡不斷增多;不管你學不學習,時間就那麼多,逐漸流逝!
祝各位運維人前程似錦!加油!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2648160/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 作業系統實驗(一)-Shell程式設計作業系統程式設計
- Linux之shell程式設計Linux程式設計
- 程式設計作業——系統管理程式設計
- Linux系統程式設計之程式介紹Linux程式設計
- Linux作業系統 程式之間的通訊Linux作業系統
- Linux系統程式設計之匿名管道Linux程式設計
- Linux系統程式設計——特殊程式之孤兒程式Linux程式設計
- Linux系統程式設計之檔案IOLinux程式設計
- Java作業系統課設之模擬程式管理系統Java作業系統
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- 計算機作業系統之程式掃盲計算機作業系統
- 作業系統 Linux下的程式作業系統Linux
- Linux之19——Shell程式設計基礎詳解Linux程式設計
- 作業系統精髓設計原理 程式排程作業系統
- 【linux】Linux作業系統Linux作業系統
- Linux作業系統——簡單程式同步Linux作業系統
- Linux 作業系統Linux作業系統
- Linux作業系統Linux作業系統
- Linux系統程式設計—共享記憶體之mmapLinux程式設計記憶體
- 【Linux】Linux系統程式設計入門Linux程式設計
- Linux系統程式設計之程式替換:exec 函式族Linux程式設計函式
- Linux系統程式設計之程式間通訊方式:管道(二)Linux程式設計
- Linux系統程式設計之程式間通訊方式:管道(一)Linux程式設計
- 作業系統之程式管理:16、管程作業系統
- 寫作業系統之實現程式作業系統
- Linux入門---(三)Shell程式設計Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux系統程式設計—有名管道Linux程式設計
- Linux系統程式設計基礎Linux程式設計
- Linux系統程式設計入門Linux程式設計
- Linux系統程式設計【4】——檔案系統Linux程式設計
- 【Linux系統程式設計】Linux訊號列表Linux程式設計
- 作業系統與Linux作業系統Linux
- Linux作業系統概述Linux作業系統
- 物聯網教程Linux系統程式設計——特殊程式之殭屍程式Linux程式設計
- 物聯網教程Linux系統程式設計——特殊程式之守護程式Linux程式設計
- Linux系統程式設計之程式間通訊方式:命名管道(二)Linux程式設計