流行Linux和Windows脚本语言列表
jopen 12年前
<p> 本文译自 <a href="/misc/goto?guid=4958334623411914052" rel="follow" target="_blank">iSystemAdmin</a> 的 《<a href="/misc/goto?guid=4958348385553936211" rel="nofollow" target="_blank">List Of Popular Scripting Languages for Linux and Windows</a>》。</p> <p> 具备脚本知识的系统管理员与其他系统管理员有着明显的区别。脚本是一门“系统管理员”创造的艺术。这门艺术需要了解系统本身的相关知识,系统管理命令的语法,编程和算法知识以及至少一门脚本编程语言。对系统管理员来说编写脚本有很多选择,每种脚本语言都有着自己独特的语法和优点。脚本语言之间几乎没有相似之处,但也不会像外星语那样难以读懂。脚本语言既可用来管理系统,也可以用做 web 开发。基于服务端和基于客户端的脚本语言很少。客户端脚本语言大多数用来在浏览器里显示内容以及与用户进行交互。服务器端脚本语言通常用来管理系统或 web 服务。本文中,我们只会关注那些用作系统管理的脚本语言。让我们开始吧!</p> <p> 关于脚本应该知道的事情:</p> <p> · 脚本应该可以作为独立的命令执行,或者可以在终端命令行接口下使用脚本语言的二进制文件调用。</p> <p> · 如果是可执行脚本,应该在开头写出下面这行特殊的代码:</p> <div class="cnblogs_code"> <pre>#!/path/of/the/cli</pre> </div> <p> 例如 bash</p> <div class="cnblogs_code"> <pre>#!/bin/bash</pre> </div> <p> 或者 perl</p> <div class="cnblogs_code"> <pre>#!/usr/bin/perl</pre> </div> <p> ‘#!’这个符号代表了执行该脚本需要调用的程序。</p> <p> <strong>Bash</strong></p> <p> 在 Linux 和 UNIX 世界里,bash 脚本的数量最多。正如我们在很多文章中提到的那样,bash 也是最受到大家喜爱的。基本上,bash 是一个具有解释功能的命令行 shell。它能够用作编程并且满足大多数的基本编程需求。在使用变量之前无需声明,也不需要知道变量的类型。它的缺点在于,使用 bash 没有其他的库可以利用。你可以使用的只有<strong><em>/bin/bash</em></strong> (或 <em><strong>/bin/sh</strong></em>)。当你声明一个变量时,你无需在前面使用$符号,但是在使用时你需要在前面加上$表明它是一个“变量”。bash 非常容易编写,Linux、UNIX 以及安装了 cywin 程序的 Windows 都带有 bash。如果你身为一名系统管理员但是不会 bash 脚本编程,你最好马上开始学习。<a href="/misc/goto?guid=4958337181256552918" rel="nofollow" target="_blank">这篇文章</a>里列举了很多好的参考书。下面是一段简单的 bash 脚本。</p> <div class="cnblogs_code"> <pre>#!/bin/bash USER=$<span style="color:#800080;">1</span> echo <span style="color:#800000;">"</span><span style="color:#800000;">Adding User $USER in group users...</span><span style="color:#800000;">"</span> /usr/sbin/useradd -g users $USER <span style="color:#0000ff;">if</span> [ $? == <span style="color:#800080;"></span> ]; then /usr/bin/passwd $USER<span style="color:#0000ff;">else</span> echo <span style="color:#800000;">"</span><span style="color:#800000;">Sorry, User addition failed</span><span style="color:#800000;">"</span> fi</pre> </div> <p> <strong>Perl</strong></p> <p> 基本上,perl 可以看做 UNIX 和 Windows 系统上的(图灵)完备编程语言。perl 的含义是实用报表提取语言(Practical Extraction and Report Language)。Perl 是一种通用编程语言,起初开发 perl 是用于文字处理,现在的使用范围非常广泛,包括系统管理、web 开发、网络编程、甚至 GUI 开发等许多场合。</p> <p> 它的优点是易于使用且同时支持面向过程和面向对象编程。perl 是模块化的,易于调用第三方模块。尽管设计的目标是图灵完备的编程语言,但是自 1993 年面世开始 perl 一直被用作编写系统管理脚本。perl 既支持编译也可以解释执行,因此 perl 比 bash 脚本更安全。当错误发生时,bash 脚本并不知道;然而,如果在执行之前编译过程中有任何错误发生 perl 会拒绝启动执行。一段小的 perl 脚本会让你体会 perl 语言的风格。#之后的内容是注释。这段脚本会创建一个包含 1000 个随机数的数组,每个随机数包含 16 个数字:</p> <div class="cnblogs_code"> <pre>#!/usr/bin/perl my @numbers; srand (time); <span style="color:#0000ff;">for</span> ($i=<span style="color:#800080;"></span>; $i<<span style="color:#800080;">1000</span>; $i++) { $a=<span style="color:#0000ff;">int</span> <span style="color:#800080;">10000000000</span>*rand (); $b=<span style="color:#0000ff;">int</span> <span style="color:#800080;">10000000000</span>*rand (); $c = $a . $b; push @numbers,substr ($c,<span style="color:#800080;"></span>,<span style="color:#800080;">16</span>).<span style="color:#800000;">"</span><span style="color:#800000;">\n</span><span style="color:#800000;">"</span>; } print @numbers;</pre> </div> <p> <strong>PHP</strong></p> <p> 大家都知道 PHP“通常”被用作 web 网站开发,但是它也可以像 perl 一样执行系统管理任务。这就是为什么很多系统管理员使用 PHP 完成 cron 任务和其他脚本工作。虽然与 perl 功能相似,但是 PHP 的目标是生成 HTML 标准输出。通常它会被嵌入在 web 服务器程序中运行。命令行版本的 PHP 支持脚本编程。类似上面 perl 示例,同样功能的 PHP 脚本如下:</p> <div class="cnblogs_code"> <pre><span style="color:#008000;">#</span><span style="color:#008000;">!/usr/bin/php</span><span style="color:#008000;"> </span> <span style="color:#0000ff;">function</span> make_seed () { <span style="color:#0000ff;">list</span>(<span style="color:#800080;">$usec</span>, <span style="color:#800080;">$sec</span>) = <span style="color:#008080;">explode</span>(' ', <span style="color:#008080;">microtime</span>()); <span style="color:#0000ff;">return</span> (<span style="color:#0000ff;">float</span>) <span style="color:#800080;">$sec</span> + ((<span style="color:#0000ff;">float</span>) <span style="color:#800080;">$usec</span> * 100000); } <span style="color:#008080;">srand</span> (make_seed ()); <span style="color:#0000ff;">for</span> (<span style="color:#800080;">$i</span>=0; <span style="color:#800080;">$i</span><1000; <span style="color:#800080;">$i</span>++) {<span style="color:#800080;">$a</span>=<span style="color:#008080;">rand</span>(1000000000,9999999999);<span style="color:#800080;">$b</span>=<span style="color:#008080;">rand</span>(1000000000,9999999999);<span style="color:#800080;">$c</span> = <span style="color:#800080;">$a</span> . <span style="color:#800080;">$b</span>; <span style="color:#800080;">$numbers</span>[]=<span style="color:#008080;">substr</span>(<span style="color:#800080;">$c</span>,0,16); }<span style="color:#0000ff;">for</span> (<span style="color:#800080;">$i</span>=0; <span style="color:#800080;">$i</span><1000;<span style="color:#800080;">$i</span>++) <span style="color:#0000ff;">echo</span> "<span style="color:#800080;">$numbers</span>[<span style="color:#800080;">$i</span>]\n";</pre> </div> <p><strong> Python</strong></p> <p> 很明显,我们是在讨论脚本语言而不是亚马逊丛林里的某种动物。python 是通用高级编程语言,它强调代码的可读性。python 的语法非常简洁且富有表现力。与 perl 类似,python 也有很多的扩展库。尽管 python 具备函数式编程的能力,但是大多数时候它被看作一门面向对象语言。web 开发方面,python 被用来开发 Apache 项目的 mod_wsgi 模块。如今,大多数 Linux 和 UNIX 发行版本都包含了 python,作为脚本语言的一种很多系统工具采用 python 进行开发。python 也支持为 GUI 环境编写代码。下面是一段简单的 python 代码:</p> <div class="cnblogs_code"> <pre>health = 10 trolls = 0 damage = 3 <span style="color:#0000ff;">while</span> health >0: <span style="color:#008000;">#</span><span style="color:#008000;">!= 0:</span><span style="color:#008000;"> </span> trolls += 1 health = health - damage <span style="color:#0000ff;">print</span> " " \ "but takes", damage, "damage points.\n" <span style="color:#0000ff;">print</span> " ", trolls, "trolls."</pre> </div> <p> <strong>sed</strong></p> <p> sed 是一个 Unix 文本解析工具,它提供一种编程语言可用来对文本解析和转换。sed 是流编辑器(Stream Editor)的缩写,基本上是一个运行飞快的文本编辑器。sed 不提供任何交互环境进行文件编辑。它逐行读取内容,对读取的内容执行命令行指定的操作即 sed 脚本,然后输出执行结果。你可以对文件用 sed 快速执行文本操作。最近 perl 被用来处理同样的工作,但是仍然有一些情形需要由专家级系统管理员使用 sed 快速解决任务。下面是一个简单的示例:</p> <div class="cnblogs_code"> <pre>$ sed -e 's/foo/bar/g' myfile.txt</pre> </div> <p> 这个命令会查找 myfile.txt 文件中所有的 foo 并替换成 bar 然后把结果输出到屏幕上。sed 的主要命令是 ‘s/foo/bar/g’,该命令在 vi 或 vim 在交互式编辑模式下同样支持。</p> <p> 除了本文介绍的这些之外,还有像 Ruby、VBScript、Java Script、JScript、Tcl、AppleScript 和 Falcon 等等很多其他的脚本语言。本文旨在介绍那些在系统管理中常用的脚本语言,希望你能够熟悉它们并提升你的工作效率。</p> <p> 英文原文 <a href="/misc/goto?guid=4958348385553936211" rel="follow" target="_blank">iSystemAdmin</a> 编译:<a href="/misc/goto?guid=4958185140659301754" target="_blank">伯乐</a>在线 – <a href="/misc/goto?guid=4958348388561656832" target="_blank">唐尤华</a></p>