『忘了再學』Shell基礎 — 1、Shell的介紹


1、Shell的由來

我們比較熟悉Windows系統的圖形化界面,對於圖形界面來說,用戶點擊某個圖標就能啟動某個程序。

在此之前我們一直在使用Linux系統的命令行模式學習,對於命令行來說,用戶輸入一個命令就能啟動某個程序。

這兩者的基本過程都是類似的,都需要查找程序在硬盤上的安裝位置,然后將它們加載到內存運行。

然而,真正能夠控制計算機硬件(CPU、內存、顯示器等)的只有操作系統內核(Kernel),圖形界面和命令行只是架設在用戶和內核之間的一座橋梁。

由於安全、復雜、繁瑣等原因,用戶不能直接接觸內核(也沒有必要),所以就需要另外再開發一個程序,使該程序的作用就是接收用戶的操作(點擊圖標、輸入命令),並進行簡單的處理,然后再傳遞給內核。同時內核執行完成的結果,也經過該程序的處理,返回給用戶。

如此一來,用戶和內核之間就多了一層“代理”,這層“代理”既簡化了用戶的操作,也保護了內核。

用戶界面和命令行就是我們所說的這個另外開發的程序,就是這層“代理”,在Linux下的這個命令行程序就叫做Shell。

Shell所處的位置如下圖所示:

image

總結:

  • Shell的英文含義是“殼”。
  • Shell是一個命令解釋器,它在操作系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操作系統,並處理各種各樣的操作系統的輸出結果,返回給用戶。換句話說,Shell是為用戶與機器之間搭建成的一個橋梁,讓我們能夠通過Shell來對計算機進行操作和交互,從而達到讓計算機為我們服務的目的。
  • Shell獨立於內核,內核是Linux系統的心臟,從開機自檢就駐扎在計算機內存中,直到計算機關閉為止。用戶的應用程序存儲在計算機硬盤上,僅當需要時才被調入內存。
  • Shell是一種應用程序,當用戶登陸Linux系統時,Shell就會被調用到內存執行。

2、Shell的兩種執行指令方式

(1)第一種方式:交互式(Interactive

是用戶直接在Shell界面(終端界面)上執行Shell命令,由於Shell界面的關系,大家都習慣一行行的書寫,很少寫出成套的程序來一起執行,所以也稱命令行。(換句話說我們操作的終端就是一個Shell)

(2)第二種方式:批處理(Batch

是用戶事先編寫一個Shell腳本文件,內含Shell腳本,而后使用Shell程序執行該腳本,這種方式我們習慣稱為Shell編程。(簡單的理解腳本就是一堆命令的集合。)

3、什么是Shell腳本

Shell腳本就是把命令、變量和流程控制語句等有機的結合起來。

Shell腳本擅長處理純文本類型的數據,而Linux系統中,幾乎所有的配置文件,日志文件,都是純文本類型文件。

4、Shell 是一種腳本語言

任何代碼最終都要被“翻譯”成二進制的形式才能在計算機中執行。

有的編程語言,如JavaGo語言等,必須在程序運行之前將所有代碼都翻譯成二進制形式,也就是生成可執行文件,用戶拿到的是最終生成的可執行文件,是看不到源碼的。這個過程叫做編譯(Compile),這樣的編程語言叫做編譯型語言,完成編譯過程的軟件叫做編譯器(Compiler)。

而有的編程語言,如ShellJavaScriptPython等,需要一邊執行一邊翻譯,不會生成任何可執行文件,用戶必須拿到源碼才能運行程序。程序運行后會即時翻譯,翻譯完一部分執行一部分,不用等到所有代碼都翻譯完。這個過程叫做解釋,這樣的編程語言叫做解釋型語言或者腳本語言(Script),完成解釋過程的軟件叫做解釋器。

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

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

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

拓展:對Shell的一些認知

  • Shell腳本是給自己或者團隊內部用的,主要是實現功能,效率可以次之(甚至不考慮)。
  • Shell腳本思路越簡單,腳本就有可能很長、很難看。
  • Shell語言不是很難,但是要求對Linux系統的熟悉程度比較高。

參考:http://c.biancheng.net/cpp/view/6994.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM