Linux園地

Linux園地─Shell 的概念

標籤:

眾所周知﹐在Linux 的世界中﹐使用文字介面﹐也就是指令列來操作系統是相當重要且不可或缺的。那麼當使用者在終端機模式的視窗輸入一個命令後﹐它是如何被處理的呢?電腦硬體本身只能看懂0 與1 的機器碼﹐因此它無法了解使用者所輸入的命令。同樣的﹐使用者也不可能直接輸入0 與1 的機器碼。所以一個電腦系統﹐在使用者與電腦硬體之間﹐需要軟體界面來做翻譯的工作。

而Shell 就是最上層的軟體界面﹐它負責解讀使用者所輸入的命令﹐並將解讀的信息傳達下去。然而﹐經由Shell 傳達的信息﹐電腦硬體仍然無法了解﹐因此需要另一低階的軟體界面 — Kernel﹐ 將Shell 傳來的信息翻譯成電腦硬體能懂的機器碼﹐最後正確執行使用者的命令。

所以Shell 和 Kernel 是在電腦系統中不同階層的界面軟體﹐它們的關係﹐可以圖一來表示︰

圖一

在不同的作業系統中﹐有不同種類的Shell。還記得過去的MS DOS 作業系統嗎?它的Shell 就是command.com。而在UNIX 及 Linux 作業系統中﹐可同時存在各種不同種類的 Shell ﹐最普遍的有Borune Shell(sh)﹑C Shell(csh) 及 Korn Shell (ksh) 等。它們各有特色﹐但其基本主要功能是類似的。而Bourne Again Shell (bash)﹐是Bourne Shell 的延伸﹐它擁有許多Borune Shell 所沒有的或是加強的功能及額外特點﹐bash 同時包含了許多C Shell 及 Korn Shell 的最佳特點。bash 也是Linux 的預設Shell。

Shell 的基本命令可分為內建命令及命令列程式兩種﹐以bash 為例﹐可以內建命令’type’ 來分別﹐ 如︰

圖二

由上圖可知﹐’type’ 本身﹑ ‘pwd’ 和 ‘cd’ 等都是內建命﹐而 ‘ls’﹑ ‘cp’ ﹑’mkdir’ ﹑’rm’ 及’cat’ 則是命令列程式。在執行內建命時﹐由於可直接執行﹐而不需在搜尋路徑中尋找﹐所以速度較快。命令列程式通常是獨立的程式執行檔﹐在搜尋路徑中尋找到後﹐才能執行。上圖中的 ‘ls’﹑ ‘cp’ ﹑’mkdir’ ﹑’rm’ 及’cat’ 都在/usr/bin 的目錄內。

Shell 除了可以執行單一的命令之外﹐還能將一系列要下達的命令編寫成一個或多數個檔案﹐這些Shell 的程式檔就是所謂的Shell Scripts。Shell 可提供變數﹑流程控制﹑及涵式等功能﹐因此Shell 不但是命令的解讀者﹐同時還是一個高階程式語言﹐它的功能強大﹐可自動處理重複性的工作﹐在系統管理﹑軟體發展及測試等方面的應用非常廣泛且重要。@

大紀元版權所有,轉載請注明出處。(http://www.dajiyuan.com)

相關新聞
微軟、LINUX和UNIX有十大漏洞易受攻擊
未來是Linux的世界嗎?
Linux促進會籲政府推動雙作業系統
Linux核心程式發現遭人置入病毒
如果您有新聞線索或資料給大紀元,請進入安全投稿爆料平台
評論