2014-07-16 60 views
1

到标准输出,我试图做这样的事情:补丁与进程替换

patch <(zcat data.201301.gz) patch_file.diff -o /dev/stdout 

结果我得到的是:

File /dev/fd/63 is not a regular file -- refusing to patch 
4504 out of 4504 hunks ignored -- saving rejects to file /dev/stdout.rej 

我怎么能生产出与进程替换的补丁的文件?

+1

为什么不向ZCAT临时文件,然后改用管道的临时文件?除非补丁可以读取标准输入,否则没有其他工作。除了构建补丁包装,但可能超出范围。 – tucuxi

+0

这就是我最后想到的。但磁盘空间非常低,我想在不解压缩文件的情况下进行。 – Nick

回答

1

看看补丁的源代码,这似乎不可能。

要修补的文件必须是标准文件,其他任何类型的文件都会被拒绝。

不幸的是符号链接,管道,描述符等不起作用。

0

要处理脚本内可能的符号链接,这有助于:

patch -o "$out" "$(readlink "$in")" "$diff"