我需要使用 bash 脚本在 Windows计算机上以某种方式更改文件大小(增加或减少)。 (文件内容无关紧要)但我必须从远程linux机器运行此脚本。我选择 truncate 命令来改变大小,这正是我需要的,因为我需要更改选择文件的完全 ,< strong>不改变它的描述符。这非常重要。
但我不要在我的linux机器上截断而我 在那里安装它(所以不要告诉我在那里安装它plz :))。我无法在我的linux机器上安装任何没有特定内核的东西 - 这是我所有问题的主要选择。
所以我决定在我的Windows机器上安装 cygwin ,因为它有 truncate 命令。另外我知道有 fallocate 命令,但我的linux机器也没有它, cygwin 也没有。所以如果还有其他命令我想知道它:)
然后在这个步骤之后我尝试通过 truncate 从 cygwin终端更改文件大小,一切正常。我必须解决的最后一个问题是从远程linux 运行 cygwin的bash ,我为此选择了 winexe 。
最后我选择的方式是:
我在运行的 linux machine 上运行 winexe 命令:
winexe myHost "c:\cygwin\bin\bash.exe myScriptWithTRUNCATE"
在 Win机器上。
但它不起作用,我不知道为什么。 truncate命令根本不会改变文件的大小。当我输入
truncate --help
一切正常,我可以在我的linux终端上看到帮助选项的结果,但是例如。
截断-s someSize myFile
不起作用,文件大小不会改变。此外,来自 truncate -s someSize myFile 的错误代码为 0
有什么建议吗?
答案 0 :(得分:0)
尝试直接在winexe命令中提供脚本名称“myScriptWithTRUNCATE”。 例:- winexe myHost“c:\ cygwin \ bin \ bash.exe myScriptWithTRUNCATE” 还可以通过将winexe命令修改为: -
来检查winexe的调试日志winexe -d 5 myHost“c:\ cygwin \ bin \ bash.exe myScriptWithTRUNCATE”
在此日志中查看实际发送到Windows的命令,作为脚本的命令。 具体见“CTRL:发送命令:运行xxxxx” 看看调试日志中有什么“xxxxx”。
winexe可让您控制Windows命令行(cmd.exe)。 尝试控制cmd.exe后尝试运行脚本。
根据上述一些调查结果,请尝试此链接以获取更多帮助 http://blog.dotsmart.net/2011/01/27/executing-cygwin-bash-scripts-on-windows/