2011-05-24 57 views
3

我的目标:创建一个套件,做一些常见的系统任务,其中包括这些替代庆典为Windows /或帮助的特定任务的cygwin

  • 复制/移动/列表/搜索/ grep的文件脚本
  • 手表/启动/停止通过sqlplus的

我从小习惯于使用Cygwin/bash的,以减轻我的生活工作,坦率地说处理

  • 反对甲骨文运行查询,我不想动远离bash语言和例如开始学习PowerShell - 所以我开始寻找在Windows上运行bash脚本的方法,...最好是Cygwin的替代方案。

    事实是,我对Cygwin安装仍然不满意,事实上它没有简单的方法,它针对的是或多或少的专家用户,并且可能会弹出一些东西在安装过程中。我的意思是。我现在想要做的是编写一套脚本,这些脚本将针对比我更不专业的人(而且我绝不是真正的专家) - 在大多数情况下,某种管理员不想知道脚本细节。

    我在想,这个用户也希望能够在另一台机器上运行这些脚本,我想能够解释他/她如何去做,而不只是说,称之为支持,而且,我最终(以便我们可以在另一台机器上安装cygwin等)

    我试过MinGW(msys),但它也需要手动步骤来设置东西 - 我的意思是,这些手动步骤已成为一个德这些Windows端口的事实标准(对不起,也许我有吹牛的心情)。双赢的bash看起来像它可能是一个解决方案,但我最终捣毁它也是如此,因为旧的bash版本,它不能做的事情,我能在Cygwin的做的事情 - 特别是

    • 此文件
    • 像“cmd/C dir *”之类的东西(不知道为什么) - 是的,我做了cmd/C dir的情况下,我在某种共享的网络文件夹中有数千个文件,而且ls显着慢于DIR

    我的问题在最后:

    • 我注定要使用PowerShell?我想我会勉强,如果我必须
    • 是否有一个简单的预包装“苗条”cygwin安装..或,便携式cygwin,甚至更好?在sourceforge上有一个可移植的cygwin项目,但并不是不需要这些手动步骤,显然 - 是否有办法自动执行这些步骤?如果有的话,我想知道为什么有人还没有做到这一点? - 然后,是否可以使用诸如“bash somescript.sh”之类的简单命令从Windows命令提示符调用bash脚本?

    感谢您的关注。

  • +0

    只要使用Cygwin,它确实不是那么糟糕。 – 2011-05-24 15:15:45

    +2

    您是否试图在Windows上使用像Unix这样的cygwin来提升*您的*体验,或者制作一个可以针对目标用户群安装的软件包? – shellter 2011-05-24 16:07:31

    +0

    @shelter我正在试图找到一种简单和用户友好的方式来集成在Windows计算机上运行BASH脚本的能力。你可以争辩说,使用“脚本”本身并不是一个“最终”的方法来制作一个用户友好的产品 - 但我想知道如果我的quick-n-dirty脚本可以被其他人重用,更高效和简单,和普遍的方式..我甚至没有谈论特别是cygwin - 只是会运行脚本的东西。 – 2011-05-25 07:44:50

    回答

    1

    由于mentioned here,Cygwin安装完全可以脚本化和参数化,以静默和自动模式运行。

    如果你定义了你需要的cygwin包的最小列表,只需使用一个小的.bat脚本,调用cygmin安装可执行这样

    setup.exe --packages=list_of_packages_you_need --quiet-mode

    +0

    所以是的,这是我最终遵循的方式,虽然有点不同 - 在同一个常见问题网页上有一个关于使用本地下载目录安装cygwin的半自动方式的提示。步骤: – 2011-05-25 10:08:10

    +1

    1.我运行setup.exe,选择“仅下载”选项,并单击所有“下一步”直到最后,有效地选择默认安装2.复制本地安装目录(我已重命名为“本地”)与网络驱动器上的setup.exe一起3.使用以下行创建一个批处理文件(automated_setup.bat):''\\ InstallNetworkDir \ cygwin \ setup.exe“-q -L -l”\\ InstallNetworkDir \ cygwin \本地“-R”c:\ cygwin“' - 该文件可以在同一网络上的任何机器上运行,它应该将cygwin安装到本地c:\ cygwin目录中 – 2011-05-25 10:17:17

    +0

    我随后在Cygwin的/ home中创建了一个脚本目录,其中我复制我的* .sh脚本。可以为每个脚本创建一个windows批处理包装器 - 我为其进行了测试,它应该包含如下所示的内容:'c:\ cygwin \ bin \ bash --login /home/scripts/myscript.sh%1% 2%3' - 我认为--login参数对于bash知道存储.bashrc的位置是必要的,并且正确映射windows环境选项和目录 – 2011-05-25 10:22:11

    1

    如果您打包cygwin安装过程,对于技术性较差的用户应该可以忍受。

    可以使用命令行参数简化cygwin安装; http://sources.redhat.com/ml/cygwin-apps/2003-03/msg00526.html

    您还可以通过cyg-apt自动安装大多数cygwin软件包。

    +0

    +1感谢您使用setup.exe命令行选项的快速响应和apt-get替代方法,我接受其他答案仅仅是因为它具有更通用的cygwin文档链接。 – 2011-05-25 09:56:29

    1

    我还没有证实这一点,但我怀疑,通过创建windows可执行版本的系统命令,msys实现了一个* nix外观。所有常用的命令在我的msys安装上都有一个可执行文件。如果这是真的,那么应该可以将它们与完整安装分开使用。

    尝试从msys bin目录复制“bash.exe”,“cp.exe”等到没有安装msys的机器/ vm并查看它是否有效。您可能还需要复制一些dll或共享库。一个Windows依赖检查程序将显示哪个dll的可执行文件正在使用。

    你可以打包你使用的东西,做一个简单的安装程序或只是复制文件与脚本。

    +0

    +1的确将MSG目录从MinGW安装(〜20mb)复制到另一台机器没有安装unix类的东西,只是运行bash --login(从相应的bin目录中)工作得很好。我仍然必须在几个地方查看脚本的代码(在cygwin中运行),特别是1)(当然)本地驱动器路径(/ c而不是/ cygdrive/c)2)仍然无法找到解决方案对于这个命令,像'cmd/c dir/b'这样的命令需要写成'cmd/c“dir/b”',如果我使用变量来连接命令字符串,事情似乎不起作用但是其他的东西可以工作 – 2011-05-25 14:10:42

    0

    看看MKS Toolkit。与Cygwin不同,它可以在Windows世界中生存。文件以CR/LF结尾,如Windows文件,并且您没有该/ cygdrive/c的东西。 MKS Toolkit中的裸盘驱动器信号正常工作。

    几个注意事项:

    • 我没有在很长一段时间使用MKS工具包。请参阅以下原因。
    • MKS Toolkit(为此坐下)每个许可证600美元。哎哟!这就是为什么我使用Cygwin的原因,即使我认为它不是很好或者工作得很好。
    • 这是基于Kornshell而不是Bash(尽管这可能有点不同)。 Kornshell和BASH有95%的相似。然而,最后的5%会让你受益。我在许多方面都比KHESH更喜欢BASH。 Kornshell的print声明比echo声明要优越。变量名不会在块中消失。你可以很容易地做双循环,因为几乎所有的命令都可以输入和输出数字unit。但是,Kornshell在提示符中没有那些整齐的转义字符,并且很难在管道中间找到命令的退出状态。
    +0

    是的,这对我来说不是很实惠,但知道有人认真投入Unix/Windows的互操作性,并且有一个专门的工具和专门的支持团队对他们很有趣。 。 – 2011-05-25 07:55:39