在我們?nèi)粘J褂玫挠?jì)算機(jī)內(nèi)部當(dāng)中,系統(tǒng)內(nèi)核Kernel才是控制計(jì)算機(jī)的主要模塊。當(dāng)然在我們用電腦的時(shí)候,是不可能接觸到這個(gè)系統(tǒng)內(nèi)核Kernel的,因此需要一個(gè)“中間件”將用戶與系統(tǒng)內(nèi)核Kernel連接起來,這個(gè)“中間件”在Linux系統(tǒng)中就叫做Shell。簡(jiǎn)單的說這就是shell,但是到底什么才是shell?有哪些分類?下面有詳細(xì)介紹。
1、什么是shell?
Linux系統(tǒng)的shell介于系統(tǒng)內(nèi)核與用戶之間,相當(dāng)于系統(tǒng)與用戶間的橋梁,負(fù)責(zé)解析輸入的命令和輸出的二進(jìn)制碼。另外,shell也屬于一種程序設(shè)計(jì)語言,為用戶提供操作機(jī)器的交互接口,使用戶輸入的命令能夠傳送到內(nèi)核執(zhí)行并把處理結(jié)果反饋回來。一句話解釋Shell的概念:shell就是在操作系統(tǒng)和應(yīng)用程序之間的一個(gè)命令翻譯工具。
2、shell的分類有哪些?
1)圖形界面shell,桌面就是一個(gè)圖形界面shell。
2)命令行shell,如:linux系統(tǒng)下的bash。
3、Shell連接用戶與內(nèi)核的真相
Shell程序本身的功能是很弱的,我們運(yùn)行一個(gè)命令,Shell去調(diào)用內(nèi)核暴露出來的接口,也就是調(diào)用一個(gè)個(gè)函數(shù),調(diào)用函數(shù)即是使用內(nèi)核。比如我們?cè)诿钚袌?zhí)行命令cat xxx.log命令來查日志文件內(nèi)容。然而,這個(gè)文件在哪個(gè)位置,有多少個(gè)數(shù)據(jù)塊等等這些細(xì)節(jié),shell都是不知道的,它只能去調(diào)用內(nèi)核提供的read或open函數(shù),告訴內(nèi)核我需要這樣做,你幫我去做。
4、Shell 是一種腳本語言
有些編程語言可以一邊編譯一邊執(zhí)行,我們稱之為腳本語言(Script)。腳本語言是使用靈活、部署容易、跨平臺(tái)性好。Shell 就是一種腳本語言,我們編寫完源碼后不用編譯,直接運(yùn)行源碼即可。Shell 雖然沒有其他編程語言那么強(qiáng)大,如C++、Python,但也支持基本的編程元素。
綜上所述,什么是shell以及有哪些分類的全部?jī)?nèi)容,想了解更多關(guān)于shell的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。