Skip to content

Instantly share code, notes, and snippets.

@arrayadd
Last active May 23, 2017 16:13
Show Gist options
  • Save arrayadd/ac5b7612dc0423b6ad5aad540b1ecfa1 to your computer and use it in GitHub Desktop.
Save arrayadd/ac5b7612dc0423b6ad5aad540b1ecfa1 to your computer and use it in GitHub Desktop.
【Linux】配置文件貌似被人动了

开发中偶尔会遇到,线下测试好好的项目,放到线上死活就是和测试不一致,这时候排除过程中,有一种情况常会考虑到:比较线上和线下配置文件是否一致,搞不好线上真被人动过或者上线部署脚本有问题。

那Linux下如何比较两个文件的异同?

使用命令diff -y -W100 file1 file2 其中-y 参数表示比较时两个文件并排对比展示,这样直观一些。而-W100则表示列的宽度为100,数字可以变。

下面:查看两个要比较文件内容

[root@dev test]# cat ./test1.txt
111
222
331
444
[root@dev test]# cat ./test2.txt 
111
333
444
555

下面:比较两个文件异同,不指定列宽度(默认130)

[root@dev test]# diff -y ./test1.txt ./test2.txt 
111								    111
222							      |	333
331							      <
444								    444
							      >	555

下面:比较两个文件异同,指定列宽度20

[root@dev test]# diff -y -W20 ./test1.txt ./test2.txt 
111	    111
222   |	333
331   <
444	    444
      >	555

注意比较结果中|表示这一行内容有差异。 < 表示后面文件少一行 >表示后面文件多一行

关于文件比较只记住上面这个diff -y file1 file2 就完全足够了,有用到时候能立即反映上来就行。

还有一些可选参数,感觉没什么必要记,像-i 这种比较时候用来忽略大小写,使用场景太小了,我比较文件肯定是两个本来应该完全相同的文件,意外某个地方被动过了,肉眼不好找才用diff的,如果还忽略大小写,有可能找不出来。

另外关于上文中参数-W20 数字 20具体指的是每列的宽度还是两列总共的宽度,以及 20的长度单位是字符还是字节 我也都没考究出来。不过我们知道它可以调节屏幕显示的效果就行。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment