Bash 避免使用补丁命令来请求';要修补的文件:';
我正在尝试修补一个文件 修补程序文件位于要修补的文件列表所在的目录中 当我跑步的时候Bash 避免使用补丁命令来请求';要修补的文件:';,bash,diff,patch,Bash,Diff,Patch,我正在尝试修补一个文件 修补程序文件位于要修补的文件列表所在的目录中 当我跑步的时候 patchpatchfile.patch?这并不能避免交互的问题/必要性,不管指定了哪个-p,至少在删除新文件的情况下是如此。没有补丁手册页或教程可以解释如果第二个文件不存在会发生什么情况——在我看来,这是补丁的唯一逻辑用例。
patch
这提醒了我
要修补的文件:
如何避免这种情况?在使用
diff
创建修补程序时,我应该在修补程序文件中添加什么以自动检测它应该修补的文件名,默认情况下,输出格式不包括原始文件名的文件名。您可以像这样使用-u
选项更改此设置
$ diff -u OriginalFile NewFile >NewFile.patch
然后,你可以简单地
$ patch -u <NewFile.patch
$patch-uGNU版本的补丁包括一个--batch
或-t
选项,用于阻止所有提示
-t or --batch
Suppress questions like -f, but make some different assumptions: skip patches
whose headers do not contain file names (the same as -f); skip patches for which
the file has the wrong version for the Prereq: line in the patch; and assume
that patches are reversed if they look like they are.
如果你想应用另一个人的补丁,而你可能没有访问权限,你可以简单地给出一个文件的绝对路径,这个补丁会在提示时改变 您使用的修补程序文件的格式是什么?(包括文件的前几行将有助于识别这一点。)补丁文件通常是一个统一的diff(即diff-u
的输出),因此它将一些文件名放在patch
可以识别的顶部。但是,文件名可以是a/subdir/file1
,而您当前的目录就在subdir
上方。您可能需要使用patch
的-p
选项(例如patch-p1
或patch-p2
)。根据Craig的评论进行调整,-pX
选项告诉patch
从左侧剥离路径的X
组件(斜线)。如果您无法找到a/path/to/filename
,要修补的文件:
,并且您知道该文件在您的系统上位于path/to/filename
,您将使用path-p1
从路径的开始处剥离a/
,从而允许patch
在您的系统上找到要修补的文件。reg,可能diff-运行folder1/folder2/>patchfile.patch
?这并不能避免交互的问题/必要性,不管指定了哪个-p
,至少在删除新文件的情况下是如此。没有补丁手册页或教程可以解释如果第二个文件不存在会发生什么情况——在我看来,这是补丁的唯一逻辑用例。