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

sunshine217 2007-11-4 12:09

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

看到大家还在黑暗中使用脚本技术,我想出来说几句。4r6j?,N'|1C i.H^
我对几个常见的脚本作一个罗列,指出它们的优缺点,然后发一个我原创的shell。 V&U py1owL3P

C3^R~ wC 脚本有很多优点,主要在于它不用编译,编写完即可执行。可以做很多系统管理方面的工作。
pd`WFVp -------------------------------------------------------------------------------------------------------------------------UY/_%w0L/q/f
cmd-shell: 这是windows自带的脚本,只要你使用开始->运行,cmd,即可打开,可编写.bat脚本。缺点是实在是太弱了,对命令结果的赋值,对变量的计算,加减除等,支持都不好,没有while,do,for等循环。一句话,很弱。
;t`nJ;C@#w 优点是不用安装(这个很重要)
{'Yszc*C4z3^/W -------------------------------------------------------------------------------------------------------------------------
y Py)S_R vbscript:  也是widnows自带的脚本。这个功能强一点,而且也可以执行cmd-shell这个脚本的命令。编写的是.vbs为后缀的脚本。支持变量赋值,循环等等。另外也有正则表达式,(这个很重要),应当说非常不错,缺点可能是速度不是很理想。对于它的使用,我想提两点,其一是你可以在cmd-shell里使用它。可以这样:C:\Documents and Settings\Administrator>cscript.exe 文件名.vbs  [参数列表] .'y+ldbZym!W
其二,vbscript是可以截获cmd命令输出的,这个恐怕很多人不知道,我们以截获ipconfig /all 输出为例。
5V8r p}0zE~L h-r!N!E0q
[font=宋体]Set objShell = CreateObject("WScript.Shell")D;f#d9J/u t]u
Set objWshScriptExec = objShell.Exec("ipconfig /all")
f,I!oz+aq r Set objStdOut = objWshScriptExec.StdOut
5`G/Q5?Q}r1J/CZ //以下是一行一行[/font][font=宋体]读取,[/font]@/KiS)hzZr"t
[font=宋体]While Not objStdOut.AtEndOfStreamW`#RS}O(yA1F
   strLine = objStdOut.ReadLine
zEKIo ['y R@8B    WScript.Echo strLine%\|-[PU K%B.A
Wend
@ |D0G] O.W f //也可以一下子全部读取。
1H*S x9J:sQ+GK}{_ [/font]Do While NotobjExecObject.StdOut.AtEndOfStream
-_6`s]N;NW[ strText = objExecObject.StdOut.ReadAll()G*k:vSu8uR?|
loop
u SVR!C_#\ msgbox strTexts3d%L5u'xb.L?3y

jY'AFR)s7k 有了这个技巧,实际上你可以把vbscript脚本和cmd-shell脚本这两种技术的优点全部合在一起了,GM'n8sO+l
从而形成一股合力。做你想做的任何事情。^h y/}+G
-------------------------------------------------------------------------------------------------------------------------
Y'EFZ'O)[n0T [size=14px]Services For Unix (SFU): [/size]可以让你使用unix/linx下的命令行来进行管理,但是这个很麻烦,暴大,而且要安装到ntfs格式中,以前是要钱的,现在不要钱了,
%O7[+TR2P1a 很多人问这个玩意的下载地址,这里我给一个吧,应该是最新的版本:4\e2nz8g,~M
[b]SFU下载地址[/b]
.]\,].@4C*N uCa E0DO;F1|3^Xx7h
          Microsoft® Windows® Services for UNIX (SFU) 3.5允许Windows和UNIX的计算机之间共享数据、安全信任。
nq:X i(j{
n,Pw6F b-q@kEta [url=http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe]http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe[/url]&T Kg&VP#b{b
en)g Wg2Q'g.{
但是这个玩意你要准备好被它玩的准备。缺点不用说,需要安装,(本人非常讨厌需要安装而且块头又大的东西。)xX#X5\K:G
\e iy9n%U9Jt @%w
写不完了,下一贴继续。
g0g7cN3l9AOv 5cB/k5Y)?
[[i] 本帖最后由 sunshine217 于 2007-11-6 21:18 编辑 [/i]]

sunshine217 2007-11-4 12:48

-------------------------------------------------------------------------------------------------------------------------
C\4zoe|E$q8du powershell: 这是下载地址: [url=http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&]http://www.microsoft.com/downloa ... splaylang=zh-cn&[/url];FamilyID=C6EF4735-C7DE-46A2-997A-EA58FDFCBA63
*X[ AD_2t'_H\U 这个我没用过,不好评价,但是如果它需要安装,我想也不用考虑了。这也是微软整出来的玩意,所以总体感觉是微软的平台前后兼容性暴差。一会整一个一会整一个,前后缺乏连续性与一致性。2Vj|&c]YH j Wsbw
ONV.F1_~8e
------------------------------------------------------------------------------------------------------------------------- t?2c#\Q;Q)[ G
win-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的一个开源项目,你可以从以下地址下载到它。c]N ~pn
[url=http://sourceforge.net/projects/win-bash/]http://sourceforge.net/projects/win-bash/[/url]
f _ Q.d.k k Q   缺点:不支持中文(这下傻掉了吧?), 这是个致使伤,因为你的脚本中或多或少都要用到中文的吧,它是把中文当作控制字符来解析的,故总是失败。但是它是个开源项目,有源码,你可以试着加入unicode或utf-8 的字符集支持,然后重新编译。如果你想学习如何编写shell,这个源码也是个很好的起点。另外,它使用的bash版本是1.x的,比较低。
n*a-x&L+l0zYL4A
8l cE2JS/PU7X3G$p*? -------------------------------------------------------------------------------------------------------------------------D7| w/CBF.E"S|
kjdcc的bash:这是kjdcc的bash项目,你可能很难下载到它,不过还好,我有,这里就传上来吧,不大。而且它是用bash2.04编译的。我是从它的项目文件中提取出来的。
E9D#C)e;T+K8H 优点:跟win-bash一样,缺点也一样。不支持中文。
7?8D fuvC6`-v,s ?
U&bE$Ie I8Zevb [[i] 本帖最后由 sunshine217 于 2007-11-6 21:19 编辑 [/i]]

sunshine217 2007-11-4 12:52

要提一下它的使用方法,解包,在bin目录下有个bash.exe,双击,即可使用。
8^lAtk(y(P 也可以这样: 在cmd-shell 下,c:\> bash 你编写的shell脚本.sh, 回车,即可使用。这里假定你已经把bash.exe的路径加入了PATH参数。
/v/]"TqU
aqU$K1X)j0g6w+^ 还没完,有空接着写,接着发。

sunshine217 2007-11-6 12:51

总共7个包,约12M.

sunshine217 2007-11-6 12:53

no2

mwpq 2007-11-6 12:54

请问是您原创的文章以及shell?
E0[Lk+?FG 除了菊花论坛还在什么地方发表过?2BUR4G|g,M*J
谢谢分享!

sunshine217 2007-11-6 13:00

是原创文章,都是自己弄的,这个我刚做好,测试完毕,,在菊花是首发。其它论坛还没发过呢。
u'qu:x(c_*] 因为我在这里辈份较高,所以在这里发,看反响吧,如果不错的话,还会做一些后续工作。

sunshine217 2007-11-6 13:01

[attach]188570[/attach]

sunshine217 2007-11-6 13:02

[attach]188571[/attach]

sunshine217 2007-11-6 13:06

[attach]188572[/attach]

sunshine217 2007-11-6 13:09

[attach]188573[/attach]

sunshine217 2007-11-6 13:10

[attach]188574[/attach]

sunshine217 2007-11-6 13:12

[attach]188575[/attach]

sunshine217 2007-11-6 13:14

[attach]188576[/attach]

sunshine217 2007-11-6 13:16

发完了。1}} z/WNq1a7Z
我还有一个mini版的,约7-8M,看看大家反应再决定发不发吧。

铁牛阳光 2007-11-6 13:47

试用了一下,坦白说,还是挺不错的。
;Y;CMa'w*eda4L
B9b6o/c7@3\a6x e 就是别扭,而且不是特灵活,譬如ps命令的执行就有一点点问题

sunshine217 2007-11-6 15:28

贴个图吧,
\|_+f6X J-U6i5v.Vo 不知不是特别灵活是什么意思呢?执行速度吗?它的执行速度飞快啊。
I"@*n1y&x8F7{c ps这个命令给出的结果是不全,这也没办法。sfu有一个ps命令,你可以把它提取出来替换进去。

sunshine217 2007-11-6 15:29

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

sunshine217 2007-11-6 15:45

2

sunshine217 2007-11-6 15:46

这是grep ,sed,gawk的一些演示。
O |@6H0b1MG 能看懂以上这些,说明linux学得有一些水准了。

mwpq 2007-11-6 16:14

thanks for sharing!
Ld*tFkev R+l I am not very familair with Linux shells. Some guys may be interested in your shell! i9w^3u;~]b _d
Well done!

vicious7 2007-11-6 16:21

强。。。好东西

sunshine217 2007-11-6 17:26

我想了想,可能别扭是因为提示符吧,
e byvon2@ i0t[ 其实在bash中,提示符是可以自己定义的,只要你改两个环境变量 PS1,PS2,PS2是辅助命令提示符,
aI,bm*LaW2`R,{ 我贴个图吧,大家就知道怎么改了。
y+ac4rx[z&@4^ 这里我把它默认的$符号改成了>号,更加符合windows下的习惯了吧。hk _t PlTx
顺便也执行了一下windows自带的外部命令,ipconfig,结果就是这个样子的。y*c)V(hB ]
KJ.L/Q4c&Na
[[i] 本帖最后由 sunshine217 于 2007-11-6 17:30 编辑 [/i]]

sunshine217 2007-11-6 17:27

这里我把它默认的$符号改成了>号,更加符合windows下的习惯了吧。

sunshine217 2007-11-6 17:54

其它。

sunshine217 2007-11-6 18:09

测试逻辑表达式。

sunshine217 2007-11-6 21:00

又改了两处地方,请大家把下而的包解开,里面有四个文件,
,p0Q v%A}.h cygpopt-0.dll  支撑文件
QGN%q,z H+L dos2unix.exe  将windows文本文件转换成unix文本文件,(去掉行尾的\r)
hfd-F:JO unix2dos.exe  将unix文本文件转换成windows文本文件, (在行尾加上\r)8L0J8Rs7C2| L
把这三个文件拷贝到 bin目录下去。.X:Yw]3^ a3l
cygwin.bat
Wcb5`(az,fs 这个文件代替 原cygwin.bat.
6RE{9yck 即可。
,J QQot1PV8r g 刚才都是讲些命令,接下去谈脚本文件的编写及执行方法。

sunshine217 2007-11-6 21:04

脚本的编写其实很简单,e ol[L
你把你要的命令写成脚本,
V'Yt.C(VA 然后用dos2unix 转换一下。lm9K!{d+t
最后在bash 里执行 bash yourscript.sh 参数列表     即可。
8H$LbN0k-T1g3PY 当然,也是可以跟参数的,可以跟无限的参数。
V5|*dovH,SWRlq 举个例子吧。下图。#tu`QWam

*fa`*d` [[i] 本帖最后由 sunshine217 于 2007-11-6 21:05 编辑 [/i]]

sunshine217 2007-11-6 21:10

test.sh
页: [1]
查看完整版本: 集linux,windows脚本优点于一身的绿色shell,(自已改的bash)建议置顶。