为了在本地运行,您可能需要使用 Cygwin(使用 Windows 时我离不开它)。所以马上开始,为 Cygwin +1。其他任何东西都是不文明的。
不过,话虽如此,我最近开始使用组合实用程序来轻松地将 Bash 脚本移植到 Windows,以便我的反 Linux 同事可以轻松地运行由 GNU 实用程序更好地处理的复杂任务。
我通常可以在很短的时间内将 Bash 脚本移植到 Batch,方法是在一个窗格中打开原始脚本并在另一个窗格中编写 Batch 文件。我使用的工具如下:
比起 GnuWin32,我更喜欢 UnxUtils,因为 [如果我错了,请指正] GnuWin utils 通常必须安装,而 UnxUtils 是开箱即用的独立二进制文件。
但是,CoreUtils 不包含一些熟悉的 *NIX 实用程序,例如 cURL,它也可用于 Windows (curl.haxx.se/download.html)。
我为项目创建了一个文件夹,并且总是 SET PATH=。在 .bat 文件中,以便除基本 CMD shell 命令之外不引用其他命令(以及项目文件夹中所需的特定 UnxUtils 以使批处理脚本按预期运行)。
然后我将需要的CoreUtils .exe文件复制到项目文件夹中,并在“.\curl.exe -s google.com”等.bat文件中引用它们。
Bat2Exe 程序是奇迹发生的地方。批处理文件完成并成功测试后,启动 Bat2Exe.exe,并指定项目文件夹的路径。 Bat2Exe 然后将创建一个包含该特定文件夹中所有文件的 Windows 二进制文件,并将使用它遇到的第一个 .bat 作为主要可执行文件。您甚至可以包含一个 .ico 文件,用作生成的最终 .exe 文件的图标。
我已经尝试了一些此类程序,并且许多生成的二进制文件都被标记为恶意软件,但我引用的 Bat2Exe 版本运行良好,并且生成的 .exe 文件扫描完全干净。
生成的可执行文件可以通过双击以交互方式运行,或者从命令行使用参数等运行,就像常规批处理文件一样,除了您将能够利用您所使用的许多工具的功能通常会在 Bash 中使用。
我意识到这会变得很长,但如果我可能离题一点,我还编写了一个批处理脚本,我称之为 PortaBashy,我的同事可以从包含便携式 Cygwin 安装的网络共享启动它。然后它将 %PATH% 变量设置为正常的 *NIX 格式(/usr/bin:/usr/sbin:/bin:/sbin)等,并且可以启动到 Bash shell 本身或启动更强大的漂亮的 MinTTY 终端模拟器。
总是有很多方法可以完成你想做的事情;这只是为工作组合正确工具的问题,而且很多时候归结为个人喜好。