-Naur差异计划是什么?

我已经看到,只要我们创build一个差异,我们使用下面的命令。

diff -Naur old new > file.patch 

我想知道这个-Naur开关是什么 这个名字是怎么来的,究竟是什么专业? 当然,我可以做没有Naur选项的差异程序来发现差异。 但是,我正在寻找更多的信息。

diff -Naurdiff -N -a -u -r的缩写。 你也可以写diff -uraN并得到相同的结果。 有了这些信息,你可以查看手册页中的其余部分。

我意识到这是一个已经有了答案的老问题,但并没有深入到我个人的期待中。 所以我做了我自己的研究,我在下面发表:

我想知道这个-Naur开关是什么

这个官方的GNU网站上创建补丁网站解释得很好; -Naur是一系列四(4)个diff命令开关,如下所示:

  • -N :将缺失的文件视为空; 允许修补程序创建和删除文件。
  • -a :将所有文件视为文本; 允许修补程序更新非文本(又名:二进制)文件。
  • -u :设置统一上下文的默认3行; 这会生成有用的时间戳和上下文。
  • -r :递归比较找到的所有子目录; 允许修补程序更新子目录。

-u标志让我困惑,但是在diff实用程序上的维基百科页面有一个很好的解释; 大胆的重点是我的:

统一格式(或unidiff)继承了由上下文格式所做的技术改进,但是会产生一个较小的差异,而新旧文本紧邻。 统一格式通常使用“-u”命令行选项来调用。 这个输出通常用作补丁程序的输入。 许多项目都要求统一格式提交“差异”,统一差异格式是软件开发人员最常用的交流格式。

统一的上下文差异最初由Wayne Davison于1990年8月开发(unidiff,出现在comp.sources.misc第14卷)。 理查德·斯托曼(Richard Stallman)在一个月后为GNU项目的diff工具增加了统一的diff支持,并且在1991年1月发布的GNU diff 1.15中推出了这个功能.GNU diff自此推广了上下文格式,允许任意格式化diff。

格式以与上下文格式相同的双行标题开始,除了原始文件之前是“—”,新文件之前是“+++”。 在此之后是一个或多个包含文件中行差异的更改块。 未改变的上下文行以空格字符开头,加行前面加上一个加号,删除行前面加上减号。

这一切基本上意味着-u标志允许diff以通常已知的,被识别和接受的格式输出补丁数据。