Linux操作系統(tǒng)的Shell簡(jiǎn)介及其分類(lèi)
2024-08-28 00:08:10
供稿:網(wǎng)友
什么是 Shell
Shell是一種具備特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系統(tǒng)之核心程序(kernel)間的一個(gè)接口。為什么我們說(shuō) shell 是一種介于系統(tǒng)核心程序與使用者間的中介者呢?讀過(guò)操作系統(tǒng)概論的讀者們都知道操作系統(tǒng)是一個(gè)系統(tǒng)資源的管理者與分配者,當(dāng)您有需求時(shí),您得向系統(tǒng)提出;從操作系統(tǒng)的角度來(lái)看,它也必須防止使用者因?yàn)殄e(cuò)誤的操作而造成系統(tǒng)的傷害?眾所周知,對(duì)計(jì)算機(jī)下命令得透過(guò)命令(command)或是程序(program);程序有編譯器(compiler)將程序轉(zhuǎn)為二進(jìn)制代碼,可是命令呢?其實(shí)shell 也是一支程序,它由輸入設(shè)備讀取命令,再將其轉(zhuǎn)為計(jì)算機(jī)可以了解的機(jī)械碼,然后執(zhí)行它。
各種操作系統(tǒng)都有它自己的 shell,以 DOS 為例,它的 shell 就是 command.com 檔。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解譯程序可以取代標(biāo)準(zhǔn)的 command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外還有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) … 等其它的 shell。UNIX/Linux 將 shell 獨(dú)立于核心程序之外,使得它就如同一般的應(yīng)用程序,可以在不影響操作系統(tǒng)本身的情況下進(jìn)行修改、更新版本或是添加新的功能。
Shell 的激活
在系統(tǒng)起動(dòng)的時(shí)候,核心程序會(huì)被加載內(nèi)存,負(fù)責(zé)管理系統(tǒng)的工作,直到系統(tǒng)關(guān)閉為止。它建立并控制著處理程序,管理內(nèi)存、檔案系統(tǒng)、通訊等等。而其它的程序,包括 shell 程序,都存放在磁盤(pán)中。核心程序?qū)⑺鼈兗虞d內(nèi)存,執(zhí)行它們,并且在它們中止后清理系統(tǒng)。Shell 是一個(gè)公用程序,它在您簽入時(shí)起動(dòng)。藉由解譯使用者輸入的命令(由命令列或命令檔),Shell 提供使用者和核心程序產(chǎn)生交談的功能。
當(dāng)您簽入(login)時(shí),一個(gè)交談式的shell 會(huì)跟著起動(dòng),并提示您輸入命令。在您鍵入一個(gè)命令后,接著就是 shell 的工作了,它會(huì)進(jìn)行:
1. 語(yǔ)法分析命令列。
2. 處理萬(wàn)用字符(wildcards)、轉(zhuǎn)向(redirection)、管線(pipes)與工作控制(job control)。
3. 搜尋并執(zhí)行命令。
當(dāng)您剛開(kāi)始學(xué)UNIX/Linux系統(tǒng)時(shí),您大部份的時(shí)間會(huì)花在于提示符號(hào)(prompt)下執(zhí)行命令。
如果您經(jīng)常會(huì)輸入一組相同形式的命令,您可能會(huì)想要自動(dòng)執(zhí)行那些工作。如此,您可以將一些命令放入一個(gè)檔案(稱(chēng)為命令檔,script),然后執(zhí)行該檔。一個(gè)shell 命令檔很像是 DOS 下的批次檔(如 Autoexec.bat):它把一連串的 UNIX 命令存入一個(gè)檔案,然后執(zhí)行該檔。較成熟的命令檔還支持若干現(xiàn)代程序語(yǔ)言的控制結(jié)構(gòu),譬如說(shuō)能做條件判斷、循環(huán)、檔案測(cè)試、傳送參數(shù)等。要寫(xiě)著寫(xiě)命令檔,不僅要學(xué)習(xí)程序設(shè)計(jì)的結(jié)構(gòu)和技巧,而且對(duì) UNIX/Linux 公用程序及如何運(yùn)作需有深入的了解。有些公用程序的功能非常強(qiáng)大(例如 grep、sed 和awk),它們常被用于命令檔來(lái)操控命令輸出和檔案。在您對(duì)那些工具和程序設(shè)計(jì)結(jié)構(gòu)變得熟悉之后,您就可以開(kāi)始寫(xiě)命令檔。當(dāng)由命令檔執(zhí)行命令時(shí),此刻,您就已經(jīng)把 shell 當(dāng)做程序語(yǔ)言使用了。