shell是什麼意思啊(什麼是shell,它的作用是什麼)
我們日常使用的作業系統如Windows、Mac OS、Android、iOS等系統,都是帶有美美的圖形操作介面的,根據圖形加簡短的文案提示,就知道該程式是幹嘛的,任何人都可以上手。然而在計算機的初期,並沒有類似這樣的圖形介面,如果要使用計算機只能用一個個的命令去操作。想想成天面對著黑屏,敲著成百上千個命令來做事,這樣的計算機只能給專業人士使用,無法普及。
當然,無論是圖形介面還是命令列,最終要實行的目的是一致的:使用者需要控制計算機。然而真正能夠對計算機進行控制的只有系統核心Kernel,而使用者不需要也很難直接去接觸系統核心,那麼就需要有有一個“中介軟體”或者橋樑將使用者與Kernel連線起來,使用者介面和命令列程式就是這座橋樑,在Linux系統中,這個命令列程式叫Shell。以上只是對Shell的通俗解釋。
什麼是shell?
Linux系統的shell介於系統核心與使用者之間,相當於系統與使用者間的橋樑,負責解析輸入的命令和輸出的二進位制碼。另外,shell也屬於一種程式設計語言,為使用者提供操作機器的互動介面,使使用者輸入的命令能夠傳送到核心執行並把處理結果反饋回來。
一句話:shell就是在作業系統和應用程式之間的一個命令翻譯工具。
shell的分類
- 圖形介面shell,桌面就是一個圖形介面shell
- 命令列shell,如:linux系統下的bash
Shell連線使用者與核心的真相
Shell程式本身的功能是很弱的,我們執行一個命令,Shell去呼叫核心暴露出來的介面,也就是呼叫一個個函式,呼叫函式即是使用核心。比如我們在命令列執行命令cat xxx.log命令來查日誌檔案內容。然而,這個檔案在哪個位置,有多少個資料塊等等這些細節,shell都是不知道的,它只能去呼叫核心提供的read或open函式,告訴核心我需要這樣做,你幫我去做。
Shell 是一種指令碼語言
有些程式語言可以一邊編譯一邊執行,我們稱之為指令碼語言(Script)。指令碼語言是使用靈活、部署容易、跨平臺性好。Shell 就是一種指令碼語言,我們編寫完原始碼後不用編譯,直接執行原始碼即可。
Shell 雖然沒有其他程式語言那麼強大,如C 、Python,但也支援基本的程式設計元素,例如:
- if...else,case,for、while等
- 變數、陣列、字串、加減乘除、邏輯運算等
- 函式,包括使用者自定義的函式和內建函式(例如 printf、export、eval 等)