我已经看到,每当我们创建diff时,我们都会使用以下命令。
diff -Naur old new > file.patch
我想知道这个-Naur
切换是什么。这个名字是如何产生的以及究竟是什么特别的呢?当然,我可以在没有Naur选项的情况下进行diff程序来发现差异。但是,我正在寻找更多有关它的信息。
答案 0 :(得分:10)
我意识到这是一个已经有答案的老问题,但它没有深入到我个人想要的深度。所以我做了我自己的研究,我将在下面发布:
我想知道这个
-Naur
切换是什么。
这official GNU site on creating patches site解释得很清楚; -Naur
是一系列四(4)个diff
命令开关,按如下方式分解:
-N
:将缺席文件视为空;允许补丁创建和删除文件。-a
:将所有文件视为文字;允许补丁更新非文本(又名:二进制)文件。-u
:设置默认3行统一上下文;这会生成有用的时间戳和上下文。-r
:递归比较找到的所有子目录;允许补丁更新子目录。 -u
旗帜让我困惑但是,the Wikipedia page on the diff utility有一个很好的解释;大胆的重点是我的:
统一格式(或unidiff)继承了技术改进 由上下文格式制作,但产生较小的差异与旧和 新文本紧邻。统一格式通常是 使用" -u"命令行选项。经常使用此输出 作为补丁程序的输入。 许多项目特别要求 " diff文件"以统一格式提交,制作统一的差异格式 软件开发人员之间最常用的交换格式。
统一上下文差异最初由Wayne Davison开发 1990年8月(在第14卷出版的unidiff中) comp.sources.misc)。理查德斯托曼为此加入了统一差异支持 一个月后GNU Project的差异工具,该功能首次亮相 GNU diff 1.15,于1991年1月发布。从那时起,GNU diff就已经发布了 推广上下文格式以允许任意格式化差异。
格式以与上下文格式相同的两行标题开头, 除了原始文件前面有" ---"而新文件是 之前是" +++"。在这之后是一个或多个变化的人 包含文件中的行差异。不变的,背景 行前面有空格字符,前面有加法行 加号,删除行前面加一个减号。
其中所有基本上都意味着-u
标志允许diff以通常已知,可识别和接受的格式输出补丁数据。
答案 1 :(得分:3)
diff -Naur
是diff -N -a -u -r
的缩写。您也可以编写diff -uraN
并获得相同的结果。有了这些信息,您可以在手册页中查看其余信息。