diff -Naur old new > file.patch
我想知道这个-Naur
开关是什么,它的名字是怎么来的,它有什么特别之处?当然,我可以使用不带Naur选项的diff程序来发现差异。但是,我正在寻找更多关于它的信息。
我知道这是一个旧问题,已经有答案了,但它没有深入到我个人所寻找的深度。因此,我进行了自己的研究,并在下面发布:
我想知道这个
-Naur
开关是什么。
这个创建补丁的GNU官方网站解释得很好;-Naur
是一系列四(4)个diff
命令开关,分解如下:
-N
:将不存在的文件视为空文件;允许补丁创建和移除文件。-a
:将所有文件视为文本;允许补丁更新非文本(即:二进制)文件。-u
:设置默认的3行统一上下文;这生成有用的时间戳和上下文。-r
:递归比较找到的任何子目录;允许补丁更新子目录。-u
标志让我感到困惑,但diff实用程序的维基百科页面有一个很好的解释;我加粗了重点:
统一格式(或unidiff)继承了上下文格式所做的技术改进, 但与旧文本和新文本紧密相邻地呈现,产生更小的差异。通常使用"-u"命令行选项调用统一格式。这个输出通常用作输入补丁程序。许多项目特别要求以统一格式提交"diffs",使统一diff格式成为软件开发人员之间交换最常见的格式。
统一上下文差异最初是由Wayne Davison在1990年8月开发的(unidiff出现在comp.sources.misc的第14卷中)。Richard Stallman在一个月后向GNU项目的diff实用程序添加了统一diff支持,该功能首次亮相于
GNU diff 1.15于1991年1月发布。自那以后,GNU diff已经将上下文格式一般化,允许任意格式化差异。该格式与上下文格式相同,以相同的两行标题开头,但原始文件前面加上“---”,新文件前面加上“+++”。接下来是一个或多个更改块,其中包含文件中的行差异。未更改的上下文行前面有一个空格字符,添加的行前面有一个加号,“-”表示删除的行。
这基本上意味着
-u
标志允许diff以一种通常已知、公认和接受的格式输出补丁数据。
diff -Naur
是 diff -N -a -u -r
的缩写。你也可以写成 diff -uraN
,得到相同的结果。有了这些信息,你就可以在 man 手册中查找其他内容。
man diff
获取答案! - devnull