流行Linux和Windows腳本語言列表
本文譯自 iSystemAdmin 的 《List Of Popular Scripting Languages for Linux and Windows》。
具備腳本知識的系統管理員與其他系統管理員有著明顯的區別。腳本是一門“系統管理員”創造的藝術。這門藝術需要了解系統本身的相關知識,系統管理命令的語法,編程和算法知識以及至少一門腳本編程語言。對系統管理員來說編寫腳本有很多選擇,每種腳本語言都有著自己獨特的語法和優點。腳本語言之間幾乎沒有相似之處,但也不會像外星語那樣難以讀懂。腳本語言既可用來管理系統,也可以用做 web 開發。基于服務端和基于客戶端的腳本語言很少。客戶端腳本語言大多數用來在瀏覽器里顯示內容以及與用戶進行交互。服務器端腳本語言通常用來管理系統或 web 服務。本文中,我們只會關注那些用作系統管理的腳本語言。讓我們開始吧!
關于腳本應該知道的事情:
· 腳本應該可以作為獨立的命令執行,或者可以在終端命令行接口下使用腳本語言的二進制文件調用。
· 如果是可執行腳本,應該在開頭寫出下面這行特殊的代碼:
#!/path/of/the/cli
例如 bash
#!/bin/bash
或者 perl
#!/usr/bin/perl
‘#!’這個符號代表了執行該腳本需要調用的程序。
Bash
在 Linux 和 UNIX 世界里,bash 腳本的數量最多。正如我們在很多文章中提到的那樣,bash 也是最受到大家喜愛的。基本上,bash 是一個具有解釋功能的命令行 shell。它能夠用作編程并且滿足大多數的基本編程需求。在使用變量之前無需聲明,也不需要知道變量的類型。它的缺點在于,使用 bash 沒有其他的庫可以利用。你可以使用的只有/bin/bash (或 /bin/sh)。當你聲明一個變量時,你無需在前面使用$符號,但是在使用時你需要在前面加上$表明它是一個“變量”。bash 非常容易編寫,Linux、UNIX 以及安裝了 cywin 程序的 Windows 都帶有 bash。如果你身為一名系統管理員但是不會 bash 腳本編程,你最好馬上開始學習。這篇文章里列舉了很多好的參考書。下面是一段簡單的 bash 腳本。
#!/bin/bash USER=$1 echo "Adding User $USER in group users..." /usr/sbin/useradd -g users $USER if [ $? == ]; then /usr/bin/passwd $USERelse echo "Sorry, User addition failed" fi
Perl
基本上,perl 可以看做 UNIX 和 Windows 系統上的(圖靈)完備編程語言。perl 的含義是實用報表提取語言(Practical Extraction and Report Language)。Perl 是一種通用編程語言,起初開發 perl 是用于文字處理,現在的使用范圍非常廣泛,包括系統管理、web 開發、網絡編程、甚至 GUI 開發等許多場合。
它的優點是易于使用且同時支持面向過程和面向對象編程。perl 是模塊化的,易于調用第三方模塊。盡管設計的目標是圖靈完備的編程語言,但是自 1993 年面世開始 perl 一直被用作編寫系統管理腳本。perl 既支持編譯也可以解釋執行,因此 perl 比 bash 腳本更安全。當錯誤發生時,bash 腳本并不知道;然而,如果在執行之前編譯過程中有任何錯誤發生 perl 會拒絕啟動執行。一段小的 perl 腳本會讓你體會 perl 語言的風格。#之后的內容是注釋。這段腳本會創建一個包含 1000 個隨機數的數組,每個隨機數包含 16 個數字:
#!/usr/bin/perl my @numbers; srand (time); for ($i=; $i<1000; $i++) { $a=int 10000000000*rand (); $b=int 10000000000*rand (); $c = $a . $b; push @numbers,substr ($c,,16)."\n"; } print @numbers;
PHP
大家都知道 PHP“通常”被用作 web 網站開發,但是它也可以像 perl 一樣執行系統管理任務。這就是為什么很多系統管理員使用 PHP 完成 cron 任務和其他腳本工作。雖然與 perl 功能相似,但是 PHP 的目標是生成 HTML 標準輸出。通常它會被嵌入在 web 服務器程序中運行。命令行版本的 PHP 支持腳本編程。類似上面 perl 示例,同樣功能的 PHP 腳本如下:
#!/usr/bin/php function make_seed () { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } srand (make_seed ()); for ($i=0; $i<1000; $i++) {$a=rand(1000000000,9999999999);$b=rand(1000000000,9999999999);$c = $a . $b; $numbers[]=substr($c,0,16); }for ($i=0; $i<1000;$i++) echo "$numbers[$i]\n";
Python
很明顯,我們是在討論腳本語言而不是亞馬遜叢林里的某種動物。python 是通用高級編程語言,它強調代碼的可讀性。python 的語法非常簡潔且富有表現力。與 perl 類似,python 也有很多的擴展庫。盡管 python 具備函數式編程的能力,但是大多數時候它被看作一門面向對象語言。web 開發方面,python 被用來開發 Apache 項目的 mod_wsgi 模塊。如今,大多數 Linux 和 UNIX 發行版本都包含了 python,作為腳本語言的一種很多系統工具采用 python 進行開發。python 也支持為 GUI 環境編寫代碼。下面是一段簡單的 python 代碼:
health = 10 trolls = 0 damage = 3 while health >0: #!= 0: trolls += 1 health = health - damage print " " \ "but takes", damage, "damage points.\n" print " ", trolls, "trolls."
sed
sed 是一個 Unix 文本解析工具,它提供一種編程語言可用來對文本解析和轉換。sed 是流編輯器(Stream Editor)的縮寫,基本上是一個運行飛快的文本編輯器。sed 不提供任何交互環境進行文件編輯。它逐行讀取內容,對讀取的內容執行命令行指定的操作即 sed 腳本,然后輸出執行結果。你可以對文件用 sed 快速執行文本操作。最近 perl 被用來處理同樣的工作,但是仍然有一些情形需要由專家級系統管理員使用 sed 快速解決任務。下面是一個簡單的示例:
$ sed -e 's/foo/bar/g' myfile.txt
這個命令會查找 myfile.txt 文件中所有的 foo 并替換成 bar 然后把結果輸出到屏幕上。sed 的主要命令是 ‘s/foo/bar/g’,該命令在 vi 或 vim 在交互式編輯模式下同樣支持。
除了本文介紹的這些之外,還有像 Ruby、VBScript、Java Script、JScript、Tcl、AppleScript 和 Falcon 等等很多其他的腳本語言。本文旨在介紹那些在系統管理中常用的腳本語言,希望你能夠熟悉它們并提升你的工作效率。
英文原文 iSystemAdmin 編譯:伯樂在線 – 唐尤華