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