diff程序中的-Naur是什么?

时间:2013-11-06 06:03:55

标签: linux diff

我已经看到,每当我们创建diff时,我们都会使用以下命令。

diff -Naur old new > file.patch

我想知道这个-Naur切换是什么。这个名字是如何产生的以及究竟是什么特别的呢?当然,我可以在没有Naur选项的情况下进行diff程序来发现差异。但是,我正在寻找更多有关它的信息。

2 个答案:

答案 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 -Naurdiff -N -a -u -r的缩写。您也可以编写diff -uraN并获得相同的结果。有了这些信息,您可以在手册页中查看其余信息。