“补丁:****无法重命名文件”bash补丁错误

时间:2016-10-14 17:42:34

标签: unix patch

我正在运行这三个命令。

cd "${folder1}"
diff -ruN "${folder1}" "${folder2}" > "${patchname}"
patch -f -s -d "${folder1}" --merge < "${patchname}"

当我运行它时,它成功地将folder1中的文件更改为与folder2相同的文件。但是,当我运行这些命令时,我得到输出。

patch: **** Can't rename file ./update.patch.omMg8yG to update.patch : Operation not permitted

1 个答案:

答案 0 :(得分:0)

问题在于:

cd "${folder1}"
diff -ruN "${folder1}" "${folder2}" > "${patchname}"

folder1内的,并尝试在folder1内创建一个补丁(我们知道这是因为您的日志文件正在调用文件./update.patch.omMg8yG,明确引用当前目录),其中包含folder1folder2 之间的一组差异,而这些差异还包括输出文件本身 - 在diff操作过程中生成的输出文件,并读取patch操作的过程。

因此,patch 试图更改其从读取的补丁文件。它失败了,因此出现了错误,但你不应该让它进行尝试 - 特别是因为在大多数类UNIX操作系统上,这种尝试都不会失败(我假设你&# #39;重新使用Cygwin,或者在不支持打开未链接文件的远程文件系统上安装。)

修改您的patchfile变量,使其指向其他目录中的位置,folder1folder2