2009年2月15日 星期日

Shell Script介詔

文章指導: robert

Shell Script指的就是運行於Shell 上的一段Script。

而什麼是Shell呢?什麼又是Script呢?請再看以下的說明。

什麼是Shell?
Shell是個命令解析器(command interpreter),可以將您輸入的指令解析成核心(Kernel)看的懂的語言,比如您輸入了

ls –l /

來顯示根目錄下的資訊,這時負責解析的shell可能將它變成

10001010101001

(上面數字無意義,只是方便舉例)
讓核心可以解讀與了解,並將您希望的結果進行輸出與顯示。

舉個現實生活的例子: 假設您開了一家工廠,需要許多耐操耐勞的外勞(Kernel)來工作,但是您不懂泰語、不懂印語、也不懂菲語,這時可以懂過翻譯專家Shell, 來進行翻譯,Shell懂您的語言、也懂得外勞(Kernel)的語言,幫您將您的工作內容解釋給外勞聽,外勞在知道了工作內容與方式之後,就開始努力的為您工作,進行產出。

所以您可以將Shell看成是您與Kernel之間的翻譯專家,架構如下:

內 <-----------------------> 外
kernel <-> shell <-> user command


不過在實際的運作上,Shell這位翻譯專家並不懂得我們的語言,反而是我們需要去懂得shell在說什麼?利用shell懂的話才能夠與核心溝通。
而shell又有不同的品種,如sh、bash、ash、ksh、zsh、csh、tcsh…,可以在/etc/shells看到許多說著不同語言的shell,為了跟核心溝通,您必需挑選一個習慣、喜歡的翻譯專家來溝通^^

什麼是Script?

如果Shell是一位翻譯專家,那我會稱Scirpt是一位記憶力很好的秘書。
您可以將許多想做的事情告訴您的秘書(Script),她會一項項完全不會漏掉的告訴翻譯專家(Shell),翻譯專家再與將每一項工作請外勞(Kernel)去執行並完成,您要做的事情只是告訴秘書”去做吧!!”,再來就看著所有事情一項項地被完成了。
當然,有時候運氣好,可能請到一位不錯的秘書,她可以幫您處理許多時常發生的小事,而不用來打擾您,當翻譯專家翻譯了外勞在抱怨便當沒得吃時,這位秘書會真接去多買些便當來給他們吃,而不用再讓你傷腦筋。
其實Script也是一種語言,它都延伸自某一種程式語言,如C,Java…,所以Script也有人稱為延伸語言(extension language)。它最主要的目的是用來控制應用程式(Application)或是Shell,所以也被稱為工作控制語言(Job Control Language)。
Script用在不同的地方或是延伸至不同的程式語言就會有不同的稱呼,如:當Script是用來控制Shell的工作時,就稱為Shell Script; 當用來控制網站伺服器,就稱為ASP(延伸至VB)、PHP(延伸自C),所以要學好Scirpt必需學會其原延伸語言與要控制的應用程式或Shell,如此才如完成Script。

學習Shell Script必學的事:
要學好Shell Script,就必需要學會兩件事:
1. Shell本身的操作
2. 原延伸語言的語法

大部份的shell都由C語言所撰寫,要跟C語言開發的Shell溝通,就是需要用C語言的流程控制、數傳傳遞才可以讓Shell Script更聰明的工作,也可讓您的Script更短小。

以SuSE預設的bash shell來說,需要的就是學習的兩件事:

1. C語言
2. bash操作

看完上面,您應該就了解,Shell Script真正在做的事情。
我們以SuSE預設的Bash shell來做個總結:
Shell Script就是利用延伸至C語言的控制與數值傳遞方式,結合bash shell上面操作的指令而成的一個語言。

Ps.內容不盡詳細與錯誤的地方再請各位不吝指教

沒有留言: