Shell腳本【1】什麼是Shell

Shell介紹

在計算機科學中,Shell俗稱殼(用來區別於核),是指“爲使用者提供操作界面”的軟件(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。

Shell 是一個應用程序,它連接了用戶和 Linux 內核,讓用戶能夠更加高效、安全、低成本地使用 Linux 內核,這就是 Shell 的本質。

Shell 本身並不是內核的一部分,它只是站在內核的基礎上編寫的一個應用程序,它和 QQ、迅雷、Firefox 等其它軟件沒有什麼區別。然而 Shell 也有着它的特殊性,就是開機立馬啓動,並呈現在用戶面前;用戶通過 Shell 來使用 Linux,不啓動 Shell 的話,用戶就沒辦法使用 Linux。

在這裏插入圖片描述

Shell 是如何連接用戶和內核的?

Shell 程序本身的功能是很弱的,比如文件操作、輸入輸出、進程管理等都得依賴內核。我們運行一個命令,大部分情況下 Shell 都會去調用內核暴露出來的接口,這就是在使用內核,只是這個過程被 Shell 隱藏了起來,它自己在背後默默進行,我們看不到而已。

其中接口其實就是一個一個的函數,使用內核就是調用這些函數。除了函數,沒有別的途徑使用內核。

Shell 能連接其它程序

在 Shell 中輸入的命令,有一部分是 Shell 本身自帶的,這叫做內置命令;有一部分是其它的應用程序(一個程序就是一個命令),這叫做外部命令。

Shell 本身支持的命令並不多,功能也有限,但是 Shell 可以調用其他的程序,每個程序就是一個命令,這使得 Shell 命令的數量可以無限擴展,其結果就是 Shell 的功能非常強大,完全能夠勝任 Linux 的日常管理工作,如文本或字符串檢索、文件的查找或創建、大規模軟件的自動部署、更改系統設置、監控服務器性能、發送報警郵件、抓取網頁內容、壓縮文件等。

Shell 還可以讓多個外部程序發生連接,在它們之間很方便地傳遞數據,也就是把一個程序的輸出結果傳遞給另一個程序作爲輸入。

和使用 C++、C#、Java、Python 等常見的編程語言並沒有什麼兩樣。

Shell 支持編程

可以在 Shell 中編程,和使用 C++、C#、Java、Python 等常見的編程語言並沒有什麼兩樣。

shell支持了基本的編程元素,例如:

  • if…else 選擇結構,case…in 開關語句,for、while、until 循環;
  • 變量、數組、字符串、註釋、加減乘除、邏輯運算等概念;
  • 函數,包括用戶自定義的函數和內置函數(例如 printf、export、eval 等);

Shell 也是一種編程語言,它的編譯器(解釋器)是 Shell 這個程序。我們平時所說的 Shell,有時候是指連接用戶和內核的這個程序,有時候又是指 Shell 編程。

Shell 主要用來開發一些實用的、自動化的小工具,而不是用來開發具有複雜業務邏輯的中大型軟件,例如檢測計算機的硬件參數、搭建 Web 運行環境、日誌分析等,Shell 都非常合適。

使用 Shell 的熟練程度反映了用戶對 Linux 的掌握程度,運維工程師、網絡管理員、程序員都應該學習 Shell。尤其是運維工程師,shell使得我們能夠自動化地管理服務器集羣,否則你就得一個一個地登錄所有的服務器,對每一臺服務器都進行相同的設置。

Shell 是一種腳本語言

什麼是腳本語言?
常見的編程語言有兩種:編譯型語言和解釋型語言,而解釋型語言由叫腳本語言(Script)。

分別介紹一下

  • 編譯型語言:必須在程序運行之前將所有代碼都翻譯成二進制形式,也就是生成可執行文件,用戶拿到的是最終生成的可執行文件,看不到源碼。如 C/C++、Pascal、Go語言、彙編等;
  • 解釋型語言:需要一邊執行一邊翻譯,不會生成任何可執行文件,用戶必須拿到源碼才能運行程序。程序運行後會即時翻譯,翻譯完一部分執行一部分,不用等到所有代碼都翻譯完。如 Shell、JavaScript、Python、PHP等;

編譯型語言的優點是執行速度快、對硬件要求低、保密性好,適合開發操作系統、大型應用程序、數據庫等。

腳本語言的優點是使用靈活、部署容易、跨平臺性好,非常適合 Web 開發以及小工具的製作。

Shell 就是一種腳本語言,我們編寫完源碼後不用編譯,直接運行源碼即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章