|
发表于 2006-6-30 13:29:51
|
显示全部楼层
说说windows教本和unix shell脚本。
单从教本语言上来说,两者都是功能有限的,两者都通过各自的方式扩展功能。
windows的wsh,可以用vbscript或jscript编写,他的主要扩展基于微软的COM技术。COM是一种组建封装技术。COM是面向接口的技术,COM在系统中注册后,就可以在脚本里创建COM实例并调用方法。
基于传统,windows下的很多软件都提供COM的二次开发接口。比如office,cuteftp等。这样大部分提供了COM接口的桌面软件,可以通过编写脚本来实现自动化。
而在系统级,从windows 2000开始,自带了一套叫做WMI的COM,全称应该是windows管理架构。通过脚本调用WMI,可以实现各种系统方面的任务,比如进程管理、硬件资源(CPU、内存、硬盘等)信息获取、关机、重启、管理用户、管理网络、管理服务等基本任务。
对于微软自己的各种服务器,其本身都有提供COM接口。方便管理的自动化。
wsh也可以调用命令行指令,不过因为windows上的大部分软件都是gui的,不提供命令行指令,所以用途并不大。
总的来说,wsh的主要思想还是使用COM这种二次接口来做自动化。
而unix shell,由于unix长久以来的哲学,绝大部分软件都是基于命令行的,而且集中存放(放在/usr/bin或/usr/local/bin中),所以unix shell的哲学主要是调用命令行指令,捕获输出。另外一个特点就是指令会和管道配合,来达到某些目的。这也是托福于unix系统通常都会自带grep,sed,awk等一些很好的指令。而在windows下,只有一个功能很弱的find(有一个软件项目unxutils,把unix下的常用指令都移植到了windows下,大家可以搜搜看看)。
所以unix shell主要是基于指令调用的。
总体来说,unix shell的功能还是要强一些,因为windows下的第三方软件并不总是提供COM接口的。而unix下绝绝大多数软件都是有命令行指令的,其x版无非是给这些命令行指令加了个壳。
大家要注意,我前面的这些比较,都是拿bash和wsh做比较,不是拿bash和windows的bat批处理文件做比较。windows的bat文件功能太弱,不用考虑。
unix shell里最常用的可能就是grep、awk和sed了,不过这三个指令的功能毕竟还是有限,所以后来perl才会诞生。我个人用perl要多过用shell,反正大部分的发行版都带着perl,不用白不用。
其实那个好那个不好并不重要,对于一个上进的程序员来说,你完全可以都掌握的。在工作中,很多情况下,你是无从选择的。
最后从个人家里的电脑来说,如果你是一个程序员的话,我建议你玩玩linux,上手并不会太难,上手以后,你就会抛弃windows的,因为linux确实好用,不是为了自由的原因。 |
|