哪种脚本语言最适合你!

摘要:
系统管理员有许多编写脚本的选项。每种脚本语言都有其独特的语法和优势。脚本语言之间几乎没有相似之处,但它们不像外来语言那样难以阅读。很少有基于服务器和基于客户端的脚本语言。大多数客户端脚本语言用于在浏览器中显示内容并与用户交互。服务器端脚本语言通常用于管理系统或web服务。一个小的perl脚本将让您体验perl语言的风格。今天,大多数Linux和UNIX发行版都包含python。作为一种脚本语言,许多系统工具使用python进行开发。

本文译自 iSystemAdmin 的 《List Of Popular Scripting Languages for Linux and Windows》。

具备脚本知识的系统管理员与其他系统管理员有着明显的区别。脚本是一门“系统管理员”创造的艺术。这门艺术需要了解系统本身的相关知识,系统管理命令的语法,编程和算法知识以及至少一门脚本编程语言。对系统管理员来说编写脚本有很多选择,每种脚本语言都有着自己独特的语法和优点。脚本语言之间几乎没有相似之处,但也不会像外星语那样难以读懂。脚本语言既可用来管理系统,也可以用做web开发。基于服务端和基于客户端的脚本语言很少。客户端脚本语言大多数用来在浏览器里显示内容以及与用户进行交互。服务器端脚本语言通常用来管理系统或web服务。本文中,我们只会关注那些用作系统管理的脚本语言。让我们开始吧!

关于脚本应该知道的事情:

• 脚本应该可以作为独立的命令执行,或者可以在终端命令行接口下使用脚本语言的二进制文件调用。

• 如果是可执行脚本,应该在开头写出下面这行特殊的代码:

1
#!/path/of/the/cli

例如bash

1
#!/bin/bash

或者perl

1
#!/usr/bin/perl

‘#!’这个符号代表了执行该脚本需要调用的程序。

Bash

在Linux和UNIX世界里,bash脚本的数量最多。正如我们在很多文章中提到的那样,bash也是最受到大家喜爱的。基本上,bash是一个具有解释功能的命令行shell。它能够用作编程并且满足大多数的基本编程需求。在使用变量之前无需声明,也不需要知道变量的类型。它的缺点在于,使用bash没有其他的库可以利用。你可以使用的只有/bin/bash (或 /bin/sh)。当你声明一个变量时,你无需在前面使用$符号,但是在使用时你需要在前面加上$表明它是一个“变量”。bash非常容易编写,Linux、UNIX以及安装了cywin程序的Windows都带有bash。如果你身为一名系统管理员但是不会bash脚本编程,你最好马上开始学习。《10本适合于系统管理员的最佳书籍》这篇文章里列举了很多好的参考书。下面是一段简单的bash脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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系统上的(图灵)完备编程语言。perl的含义是实用报表提取语言(Practical Extraction and Report Language)。Perl是一种通用编程语言,起初开发perl是用于文字处理,现在的使用范围非常广泛,包括系统管理、web开发、网络编程、甚至GUI开发等许多场合。

它的优点是易于使用且同时支持面向过程和面向对象编程。perl是模块化的,易于调用第三方模块。尽管设计的目标是图灵完备的编程语言,但是自1993年面世开始perl一直被用作编写系统管理脚本。perl既支持编译也可以解释执行,因此perl比bash脚本更安全。当错误发生时,bash脚本并不知道;然而,如果在执行之前编译过程中有任何错误发生perl会拒绝启动执行。一段小的perl脚本会让你体会perl语言的风格。#之后的内容是注释。这段脚本会创建一个包含1000个随机数的数组,每个随机数包含16个数字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
 
my@numbers;
srand(time);
 
for($i=0; $i<1000; $i++)
{
$a=int10000000000*rand();
$b=int10000000000*rand();
$c= $a. $b;
 
push@numbers,substr($c,0,16)." ";
}
print@numbers;

PHP

大家都知道PHP“通常”被用作web网站开发,但是它也可以像perl一样执行系统管理任务。这就是为什么很多系统管理员使用PHP完成cron任务和其他脚本工作。虽然与perl功能相似,但是PHP的目标是生成HTML标准输出。通常它会被嵌入在web服务器程序中运行。命令行版本的PHP支持脚本编程。类似上面perl示例,同样功能的PHP脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/php
 
functionmake_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] ";

Python

很明显,我们是在讨论脚本语言而不是亚马逊丛林里的某种动物。python是通用高级编程语言,它强调代码的可读性。python的语法非常简洁且富有表现力。与perl类似,python也有很多的扩展库。尽管python具备函数式编程的能力,但是大多数时候它被看作一门面向对象语言。web开发方面,python被用来开发Apache项目的mod_wsgi模块。如今,大多数Linux和UNIX发行版本都包含了python,作为脚本语言的一种很多系统工具采用python进行开发。python也支持为GUI环境编写代码。下面是一段简单的python代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
health =10
trolls =0
damage =3
 
whilehealth >0:        #!= 0:
 
trolls +=1
 
health =health -damage
 
print" "
 
"but takes", damage, "damage points. "
 
print" ", trolls, "trolls."

sed

sed是一个Unix文本解析工具,它提供一种编程语言可用来对文本解析和转换。sed是流编辑器(Stream Editor)的缩写,基本上是一个运行飞快的文本编辑器。sed不提供任何交互环境进行文件编辑。它逐行读取内容,对读取的内容执行命令行指定的操作即sed脚本,然后输出执行结果。你可以对文件用sed快速执行文本操作。最近perl被用来处理同样的工作,但是仍然有一些情形需要由专家级系统管理员使用sed快速解决任务。下面是一个简单的示例:

1
$ sed-e 's/foo/bar/g'myfile.txt

这个命令会查找myfile.txt文件中所有的foo并替换成bar然后把结果输出到屏幕上。sed的主要命令是 ‘s/foo/bar/g’,该命令在vi或vim在交互式编辑模式下同样支持。

除了本文介绍的这些之外,还有像Ruby、VBScript、Java Script、JScript、TclAppleScriptFalcon等等很多其他的脚本语言。本文旨在介绍那些在系统管理中常用的脚本语言,希望你能够熟悉它们并提升你的工作效率。

本文摘自http://blog.jobbole.com/22838/

免责声明:文章转载自《哪种脚本语言最适合你!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux下如何模拟按键输入和模拟鼠标背景设置透明度字体不透明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Fortran入门:Windows平台的Fortran编译器安装和使用

因为课程需要,今年开始学习FORTRAN语言。之前学校的计算概论用的是C,后来又学了C++和Python作为面向对象的工具,数值计算方面主要通过学校的许可证用的MATLAB。因为专业侧重数值模拟和反演问题,对于FORTRAN这一门上古的数值计算语言早有耳闻,在学习Scientific Computing的时候也经常讲到一些原本是基于FORTRAN优化的子程...

实战|手把手教你如何使用抓包神器MitmProxy

大家好,我是阿辰,今天教大家如何使用MitmProxy抓包工具。 玩爬虫的小伙伴都知道,抓包工具除了MitmProxy外,还有Fiddler、Charles以及浏览器netwrok等 既然都有这么多抓包工具了,为什么还要会用MitmProxy呢??今天教大家使用MitmProxy抓包工具的原因,主要有以下几点: 不需要安装软件,直接在线(浏览器)进行抓...

python直接打印列表

row = [u'课程', u'语文', u'数学', u'英语']print rowprint str(row).decode('unicode-escape')import jsons=json.dumps(row,ensure_ascii=False)print s output: [u'u8bfeu7a0b', u'u8bedu6587', u'u...

使用yum安装php72

1.执行yum search php72w查看自己的yum源有没有php72 如果自己有安装其它php版本先执行yum -y remove php* 2.没有php72执行以下命令扩展yum库,以下命令来自https://webtatic.com/packages/php72/(想看自行查看) yum install epel-release rpm -...

(转)使用Ubuntu下的PyCharm进行ROS开发

然后,正文来了,我将在下面介绍2点环境配置,1.launch文件的关联,2.roslib的导入 launch文件的关联 pycharm自己是不支持launch文件的,但是我们还是希望用ide实现编写,例如这样: 具体做法就是在file/settings里面打开filetypes 然后在registered patterns里面添加*.launch文件...

简单谈谈python的反射机制

反射,可以理解为利用字符串的形式去对象中操作成员属性和方法 反射的这点特性让我联想到了exec函数,也是把利用字符串的形式去让Python解释器去执行命令 Python Version: 3.5+   对编程语言比较熟悉的朋友,应该知道“反射”这个机制。Python作为一门动态语言,当然不会缺少这一重要功能。然而,在网络上却很少见到有详细或者深刻的剖析...