wget的二进制文件通过管道传输到Windows上的其他命令会破坏二进制文件

时间:2011-12-15 16:04:27

标签: windows unix wget

这可能会推动stackoverflow和serverfault之间的界限,但是这里也是如此。我试图从maven repo中获取war文件,然后将其复制到deploy目录中的远程系统。这就是我所拥有的:

wget -qO- http://somerepo/nexus/content/group/public/com/mycomp/myartifact-0.0.1.war | 
    ssh remotesystem "cat > /path/to/appserver/deploy/myartifact.war

请注意,为了便于阅读,最多可分为2行

问题在于,当我在Windows上运行时,导致输出重定向到-qO-的{​​{1}}(STDOUT部分只是让评论安静下来)也会导致窗口出现问题将q翻译为0A,或将LF翻译为CRLF。我可以只输出dos2unix,但想知道是否有办法在没有额外步骤的情况下执行此操作。有什么想法吗?

-------------------------- EDIT -------------------- ------------

在有人提到之前,我可以这样做:

0D0a

但是ICK!为什么wget将CR添加到二进制文件中?我知道它会转到STDOUT,但是二进制文件转到STDOUT的唯一原因是它可能会被管道输入。二进制是二进制的,将字符注入二进制文件是没有意义的......

--------------------------编辑2 ------------------- --------------

我的wget版本似乎是1.11.4

wget -qO- http://somerepo/nexus/content/group/public/com/mycomp/myartifact-0.0.1.war | 
    ssh remotesystem "cat | dos2unix > /path/to/appserver/deploy/myartifact.war

这是使用C:\Temp>"C:\Program Files (x86)\Gnu\GetGnuWin32\gnuwin32\bin\wget" -V SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\Program Files (x86)\Gnu\GetGnuWin32\gnuwin32/etc/wgetrc GNU Wget 1.11.4 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Originally written by Hrvoje Niksic <hniksic@xemacs.org>. Currently maintained by Micah Cowan <micah@cowan.name>.

获得的

0 个答案:

没有答案