我正在寻找适用于 windows、Linux、MacOS X 的跨平台脚本(语言)。我厌倦了 .bat / bash 。
我想做一些事情,例如,在自动登录时锁定工作站''(我在 X-Window 中有这个,但解决方案非常难看;现在,我希望在 MS Windows 上这样,而不是那么难看:-)) .
通常:自动化任务。
还是使用 Windows Scripting Host 会更好?
PowerShell 也浮现在我的脑海中,但这似乎只适用于我的口味。像 Python、Ruby、(Java?)这样的语言可以与 WSH 交互(优雅吗?明智?)?
DBUS、DCOM 等也作为图片的一部分出现在脑海中。
目前我混合使用 Java、.bat、bash、Ruby、Scala;Excel的一些VBA。有时会变得很丑陋。
我想要一个跨平台的通用解决方案,其中包含/使用接近操作系统特定的 ,,native'' 部分。比如 Ruby 驱动一些特定于 Windows 的东西(只是一个猜测)。
你用什么?
TIA
9 回答
我是Lua的忠实粉丝:
语法有点类似于 Pascal,并且在脚本中运行良好。
极好的功率重量比。精湛的工程。非常好的设计。
非常可移植到具有 ANSI C 编译器的任何平台。
通过 wxLua 和其他绑定支持 GUI
一些支持隐藏常见任务中的操作系统差异,例如 Lua 文件系统插件
核心系统和库非常简单,您可以理解您正在使用的所有内容,但与 bash/bat 相比仍然具有出色的优势。表达能力可与 Python 或 Ruby 相媲美。
您不会对库和框架感到不知所措,这可能是一个加号或减号。
有一本很棒的书:Roberto Ierusalimschy's Programming in Lua;您可以在线免费获得上一版。
性能胜过 tcl、perl、python、ruby
为了在 x86 硬件上获得更快的性能,有 LuaJIT。
最后,这就是洞中的王牌:如果您遇到任何特定于平台的问题,编写特定于平台的 C 代码并将其动态加载到 Lua 脚本中是很容易的。Lua 在设计时就考虑到了这个任务,并且做得非常好。您还可以轻松地使用 C 来提高性能(例如,计算 MD5 校验和)。
在过去的 3 到 5 年中,我一直在逐渐将脚本从 bash/ksh/awk/sed/grep/perl 迁移到 Lua。我对结果非常满意。
你可以试试Batsh
Batsh 是一种简单的编程语言,可编译为 Bash 和 Windows Batch。它使您可以编写在所有平台上运行的脚本,而无需任何额外的依赖。
Perl 和 Python 几乎在每个平台上都可用
我认为你在矛盾的边缘玩杂耍:你想要独立于平台(值得称赞)但也“接近操作系统细节”。
但是,如果您更加强调平台独立性,那么我一直在考虑使用 groovy(ruby 的一种对 java 更友好的亲戚)来编写通用脚本。当您需要它时,您可以通过调用 OS shell 命令获得特定于操作系统的行为。
我的动机有点不同:我发现 groovy 代码比 bash 更健壮,尽管我也需要一个好的多平台脚本工具来开发我正在开发的项目。
比如 Ruby 驱动一些特定于 Windows 的东西
它当然可以,并且在 Windows 上的 Ruby博客上,您可以找到很多示例,在 Pickaxe 书和简陋的书中也有一章。
我会将 C# 与 Mono 一起使用。
在 shell 中有 UNIX 和类似 UNIX 的平台的可能性,但我不认为你所要求的在任何脚本语言中都是可能的,因为 Windows。
对于 UNIX 系统,您可以使用:
#!/bin/sh
TYPE=`uname`;
echo 'this is ' ${TYPE};
if [ ${TYPE} = HP-UX ]
then bdf /var;
elif [ ${TYPE} = Linux ]
then df -h /var;
elif [ ${TYPE} = FreeBSD ]
then df -k /var;
else echo "Unsupported OS - ${TYPE}"
fi
我希望它会帮助你!
不确定您是否仍然需要它,但如果需要,请尝试 ant ( http://ant.apache.org/ )。它是一种跨平台的“脚本语言”。基本上,ant 文件是由 JVM 程序解释的 xml 文件。