在軟件領(lǐng)域,語言主要分為兩大類飘哨,腳本編程(scripting)語言和編譯型(compiled)語言胚想。
許多大型或中型的程序都是用編譯型語言寫成,例如C芽隆、C++或是JAVA浊服。用編譯型語言寫成的程序,從源代碼(source code)轉(zhuǎn)換成目標代碼(object code)胚吁,便能直接通過計算機來執(zhí)行牙躺。(JAVA并不完全是這樣,但很接近這種說法腕扶。)
編譯型語言的好處是高效孽拷,而因為高效,所以編譯型語言多是運作于底層半抱,處理的是字節(jié)、整數(shù)、浮點數(shù)或是其他機器層級的對象躲履。
例如,在C++里激蹲,進行“將一個目錄里所有的文件復(fù)制到另一個目錄中”的簡單操作,會非常麻煩江掩,也很困難学辱。
腳本編程語言,通常是解釋型(interpreted)的环形。這一類程序的執(zhí)行策泣,是由解釋器(interpreter)讀入程序代碼,并將其轉(zhuǎn)換成內(nèi)部的形式抬吟,再執(zhí)行萨咕。解釋器本身也是一般的編譯型程序。
使用腳本編程語言火本,最方便的地方在于腳本編程語言大多運行在比編譯型語言高的層級危队,能夠輕易處理文件與目錄之類的對象,但相對的钙畔,腳本編程語言的效率不如編譯型語言茫陆。
一般常用的腳本編程語言有Python、Ruby和Shell擎析。
特別是Shell腳本簿盅,可以在各UNIX系統(tǒng)之間通用,并且經(jīng)過了POSIX的標準化揍魂,可以應(yīng)用到很多系統(tǒng)上桨醋,例如使用比較廣泛紅帽Linux(Red Hat)系統(tǒng)。
現(xiàn)在现斋,我們從一個簡單的腳本開始喜最,在紅帽Linux系統(tǒng)上使用。
比如庄蹋,我們想知道目前系統(tǒng)上有多少用戶登錄瞬内,可以輸入who命令。
可以得知蔓肯,當(dāng)前的系統(tǒng)有兩個用戶登錄遂鹊。由于是在虛擬機上的操作系統(tǒng)振乏,因此列出來的用戶很少蔗包,tty1指的是文字界面,就是當(dāng)前打開的命令窗口慧邮,pts/0指的是打開的第一個終端调限,若是再有另外一個終端打開舟陆,就是pts/1。
在很多大型的耻矮、多用戶的系統(tǒng)上秦躯,who命令所列出來的表會很長,這個時候統(tǒng)計用戶數(shù)就很麻煩裆装,對此踱承,可以用wc程序。wc程序是一個字數(shù)計算程序哨免,可以計算出行數(shù)(line)茎活、字數(shù)(word)、和字符數(shù)(character)琢唾。使用wc -l命令载荔,只算行數(shù)。
“|”是管道(pipeline)符號采桃,可以在兩個程序之間建立管道懒熙。who | wc -l命令就是who的輸出,成了wc的輸入普办,最后得出的結(jié)果就是已登錄用戶的個數(shù)工扎。
接下來,就是把這條命令輸入一個一般的文件中衔蹲,再給該文件賦予執(zhí)行的權(quán)限定庵,大體流程如下:
我們先來建立文件,按照流程輸入踪危。
可以通過ls命令查看文件是否建立蔬浙,再通過cat命令查看文件內(nèi)容。
然后再賦予文件執(zhí)行的權(quán)限贞远,用chmod命令畴博。
先用ll命令查看各個文件的狀況,可以看到新建的nusers文件的權(quán)限狀態(tài)為-rw-rw-r--蓝仲,沒有末尾的x俱病,也就是沒有執(zhí)行權(quán)限。
輸入命令chmod +x nusers袱结,給文件nusers賦予執(zhí)行權(quán)限亮隙,再用ll命令查看,成功賦予執(zhí)行權(quán)限垢夹。
最后溢吻,直接使用該文件。有兩個命令可以運行,一個是./促王,一個是sh犀盟。
nurses就是一個簡單的腳本文件。一般而言蝇狼,開發(fā)一個小型的Shell腳本阅畴,首先要在命令行(command line)上測試,然后確認能夠完成工作的合適語法迅耘,再將編寫的程序語言放入獨立的腳本文件中贱枣,設(shè)置相應(yīng)的執(zhí)行權(quán)限,這樣一個小型的腳本文件就可以直接使用了颤专。