取差异时复制上下文输出格式和统一上下文输出格式有什么区别?

Sen*_*Sen 6 linux diff

取差异时,复制上下文输出格式和统一上下文输出格式有什么区别?

diff -NBur dir1/ dir2/  
diff -NBcr dir1/ dir2/  
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 12

显然你误读了手册。该-u标志用于统一上下文,而不是 Unicode,-c并且用于复制上下文,而不是“上下文格式”:

-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied context.

-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context.

找出区别的最直接方法是尝试一下:

$ cat >1
line
diff 
more
^D
$ cat >2
line 
ffid
more
^D
Run Code Online (Sandbox Code Playgroud)
$ diff -c 1 2
*** 1   2010-12-14 09:08:48.019797000 +0200
--- 2   2010-12-14 09:08:56.029797001 +0200
***************
*** 1,3 ****
  line
! diff
  more
--- 1,3 ----
  line
! ffid
  more
Run Code Online (Sandbox Code Playgroud)
$ diff -u 1 2
--- 1   2010-12-14 09:08:48.019797000 +0200
+++ 2   2010-12-14 09:08:56.029797001 +0200
@@ -1,3 +1,3 @@
 line
-diff
+ffid
 more
Run Code Online (Sandbox Code Playgroud)

你明白有什么区别吗?

  • @Sen:加上`-c`,你有两个不同的文本块,其中`!`标记不同的行,而`-u`只有一个,其中`+`和`-`在行之前表示不同行的版本:当“1”中的行从“2”中丢失时减去,加上“2”中的行被添加到“1”时。现在够清楚了吗? (2认同)