打印

[原创] 集linux,windows脚本优点于一身的绿色shell,(自已改的bash)建议置顶。

本主题由 mwpq 于 2008-1-7 11:06 关闭

集linux,windows脚本优点于一身的绿色shell,(自已改的bash)建议置顶。

看到大家还在黑暗中使用脚本技术,我想出来说几句。2 R7 g, r0 q; k& `7 ~7 d- V; W% K
我对几个常见的脚本作一个罗列,指出它们的优缺点,然后发一个我原创的shell。6 f. {) S( {/ E5 N; U7 o$ N

d9 A D( c- ^脚本有很多优点,主要在于它不用编译,编写完即可执行。可以做很多系统管理方面的工作。
G, i* u% r( V4 n6 ?' [-------------------------------------------------------------------------------------------------------------------------' q1 \! j/ `, U6 r1 A* D. k
cmd-shell: 这是windows自带的脚本,只要你使用开始->运行,cmd,即可打开,可编写.bat脚本。缺点是实在是太弱了,对命令结果的赋值,对变量的计算,加减除等,支持都不好,没有while,do,for等循环。一句话,很弱。
) f/ k8 m, z% K优点是不用安装(这个很重要)
3 ] }9 d, z1 ~+ f-------------------------------------------------------------------------------------------------------------------------& q1 m$ g( l; B+ n4 A8 s% |- s
vbscript: 也是widnows自带的脚本。这个功能强一点,而且也可以执行cmd-shell这个脚本的命令。编写的是.vbs为后缀的脚本。支持变量赋值,循环等等。另外也有正则表达式,(这个很重要),应当说非常不错,缺点可能是速度不是很理想。对于它的使用,我想提两点,其一是你可以在cmd-shell里使用它。可以这样:CDocuments and Settings\Administrator>cscript.exe 文件名.vbs [参数列表] .
+ F# G% u9 \/ U+ @其二,vbscript是可以截获cmd命令输出的,这个恐怕很多人不知道,我们以截获ipconfig /all 输出为例。
- a# I: i/ }) _$ i( P' M' r' A* D, @3 p! Z6 a
Set objShell = CreateObject("WScript.Shell")0 A' r& U& R$ N$ n3 m7 q
Set objWshScriptExec = objShell.Exec("ipconfig /all")
) o- P4 H9 L* ^Set objStdOut = objWshScriptExec.StdOut
4 g. P6 T% a. P2 d$ U% w1 z$ y//以下是一行一行
读取,
_1 |( S# h) Z" ^ \2 V: vWhile Not objStdOut.AtEndOfStream; ?* M: Z5 T8 y
strLine = objStdOut.ReadLine
# j! l2 }- f' ~" M) r; I WScript.Echo strLine
# k* X. d, X5 J4 JWend
1 J3 ?6 [. l+ i3 i3 E l$ h3 y3 c) \! {//也可以一下子全部读取。: `4 d+ P& y; W* t5 x9 O% h
Do While NotobjExecObject.StdOut.AtEndOfStream
" d& ~+ n8 Q7 H( Q8 P& }strText = objExecObject.StdOut.ReadAll()
7 O0 N/ L, j1 sloop$ c& { t" I/ X( @
msgbox strText- k3 z3 }, D/ D3 s* U+ Q. `

4 s5 H! n1 U5 g% T5 S有了这个技巧,实际上你可以把vbscript脚本和cmd-shell脚本这两种技术的优点全部合在一起了," H N1 t8 y4 k. W% S& p* a
从而形成一股合力。做你想做的任何事情。
$ P+ J" j( U5 I-------------------------------------------------------------------------------------------------------------------------
! K( J+ t6 @: t/ NServices For Unix (SFU): 可以让你使用unix/linx下的命令行来进行管理,但是这个很麻烦,暴大,而且要安装到ntfs格式中,以前是要钱的,现在不要钱了,
1 V+ c, I7 z1 v& W很多人问这个玩意的下载地址,这里我给一个吧,应该是最新的版本:
. W5 a. ]6 b9 F' u7 O$ tSFU下载地址
$ r5 [7 z) r# k) E+ m; f8 m# i) v& N, G9 e3 I
Microsoft® Windows® Services for UNIX (SFU) 3.5允许Windows和UNIX的计算机之间共享数据、安全信任。# B5 _* n: J( ~( K
! k/ V3 ?- X5 u% j+ q/ ? B
http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe( I- C$ Y& F- Y4 `

0 _0 h5 f; W4 g% {9 {但是这个玩意你要准备好被它玩的准备。缺点不用说,需要安装,(本人非常讨厌需要安装而且块头又大的东西。)
( c6 A( _# ~1 x8 P# X7 o
1 _1 \$ J8 E+ q* f2 t4 q( [写不完了,下一贴继续。
$ N" D9 Y L8 y8 w) V: Y/ D: `3 J3 H1 I% S0 T$ v
[ 本帖最后由 sunshine217 于 2007-11-6 21:18 编辑 ]

TOP

-------------------------------------------------------------------------------------------------------------------------/ M: c) P# v2 A, _: X4 ?
powershell: 这是下载地址: http://www.microsoft.com/downloa ... splaylang=zh-cn&;FamilyID=C6EF4735-C7DE-46A2-997A-EA58FDFCBA639 N' h( h) \* J% D: s6 c
这个我没用过,不好评价,但是如果它需要安装,我想也不用考虑了。这也是微软整出来的玩意,所以总体感觉是微软的平台前后兼容性暴差。一会整一个一会整一个,前后缺乏连续性与一致性。
! A; B6 }3 S* X) L% n- ?" K x
2 ~: I1 H; m% J& F1 L/ B-------------------------------------------------------------------------------------------------------------------------
2 o: Y+ {$ o1 [; r( cwin-bash: 这是linux下的shell:bash, 被移植到windows下的产物,它只有单个win-bash.exe文件,不用安装,双击即可打开,进行交互式使用,当然也可以编写xx.sh的脚本,让win-bash来执行它。win-bash实际上是一个命令解释器,非常强劲,大小也控制得很好,大约只有3M. 它支持linux-bash的一切语法特点, 比如说 if [ $a -gt $b], do,for,while循环,命令替换,判断,逻辑等等。如果你要使用它,可以跟我待会给出的unx-utility 工具包一起使用。这样就支持 gawk,sed,grep,ls,head,tail,等等数十个linux命令了。win-bash实际上是sourceforge.net的一个开源项目,你可以从以下地址下载到它。
3 Z& a$ T! j: ?) s% t7 A0 Hhttp://sourceforge.net/projects/win-bash/, o; R2 N5 S1 P( x$ E( }6 H0 k$ n
  缺点:不支持中文(这下傻掉了吧?), 这是个致使伤,因为你的脚本中或多或少都要用到中文的吧,它是把中文当作控制字符来解析的,故总是失败。但是它是个开源项目,有源码,你可以试着加入unicode或utf-8 的字符集支持,然后重新编译。如果你想学习如何编写shell,这个源码也是个很好的起点。另外,它使用的bash版本是1.x的,比较低。) U& ~8 ^3 |; _ z+ n
% O" T* b; o6 o4 O% n
-------------------------------------------------------------------------------------------------------------------------( A' [) n2 V, r1 M/ H+ H
kjdcc的bash:这是kjdcc的bash项目,你可能很难下载到它,不过还好,我有,这里就传上来吧,不大。而且它是用bash2.04编译的。我是从它的项目文件中提取出来的。! f1 ? @% n; _- ~8 j
优点:跟win-bash一样,缺点也一样。不支持中文。6 q1 r; f' G% `: i7 }! t0 P2 U
; ]: W4 a+ E9 z- |$ p- U- a3 p7 T) ]
[ 本帖最后由 sunshine217 于 2007-11-6 21:19 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

要提一下它的使用方法,解包,在bin目录下有个bash.exe,双击,即可使用。" G7 z! E. R2 {& o( P
也可以这样: 在cmd-shell 下,c> bash 你编写的shell脚本.sh, 回车,即可使用。这里假定你已经把bash.exe的路径加入了PATH参数。
! [; f/ f6 o8 c; D8 d& |6 H
) ?# X- ?, B! {) \- S6 v还没完,有空接着写,接着发。

TOP

总共7个包,约12M.
附件: 您所在的用户组无法下载或查看附件

TOP

no2

TOP

请问是您原创的文章以及shell?
- l) T. k& C$ a2 v除了菊花论坛还在什么地方发表过?! @1 l: I# H& s( R& A7 I
谢谢分享!
《无量寿经·第十八愿》言:
设我得佛,十方众生,至心信乐,欲生我国,乃至十念,若不生者,不取正觉。唯除五逆,诽谤正法。

TOP

是原创文章,都是自己弄的,这个我刚做好,测试完毕,,在菊花是首发。其它论坛还没发过呢。+ z3 F6 s5 S& v) k4 a, x3 o% [* @
因为我在这里辈份较高,所以在这里发,看反响吧,如果不错的话,还会做一些后续工作。

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

附件: 您所在的用户组无法下载或查看附件

TOP

发完了。& g# D5 w! g' @7 q( ?+ {4 q
我还有一个mini版的,约7-8M,看看大家反应再决定发不发吧。

TOP

试用了一下,坦白说,还是挺不错的。
+ D$ l+ a$ v) P- c
$ {5 P) S& ^, v6 N0 u7 ^就是别扭,而且不是特灵活,譬如ps命令的执行就有一点点问题

TOP

贴个图吧,
* k; a, Z, S, c4 }+ B% V不知不是特别灵活是什么意思呢?执行速度吗?它的执行速度飞快啊。
7 y) n7 L3 K1 ~0 x$ w' n8 Q/ M. `ps这个命令给出的结果是不全,这也没办法。sfu有一个ps命令,你可以把它提取出来替换进去。
附件: 您所在的用户组无法下载或查看附件

TOP

演示了一些特性,比如,循环,数组,取模,浮点运算,

TOP

2
附件: 您所在的用户组无法下载或查看附件

TOP

这是grep ,sed,gawk的一些演示。
# d$ v$ U, t& Q能看懂以上这些,说明linux学得有一些水准了。

TOP