【字符比较】文件内容比较方法

md5值校验失败问题

两个文件用cat 打开的 txt 显示是一样的

 

①用十六进制比较

先用vim -b data 以2进制打开文件,然后用xxd工具转化,在vim的命令行模式下:

  1.  :%!xxd        --将当前文本转化为16进制格式
  2.  :%!xxd -r    --将16进制转化为普通文本

直接vim 当前文件

按下回车,当前的文本内容被转换成16进制

 

 

 

②hexdump

hexdump可以用来查看二进制文件的16进制结果

hexdump data

如果文件比较大可以用 hexdump data | less 分页显示

如果想得到16进制和ascii码对应的显示结果,可以添加 -C参数

hexdump -C data | less

hexdump ursalink_devicehub_md5  | less

  

③用md5校验两个文件的md5值不一致

 

 

④diff

 

⑤file

校验方式:

root@ubuntu:/# file ursalink_devicehub_md5 
ursalink_devicehub_md5: ASCII text, with no line terminators
root@ubuntu:
/# file /root/ursalink_devicehub_md5 /root/ursalink_devicehub_md5: ASCII text

可以看到前面的那个少了一个结束符

 

⑥用VScode编程软件的右下角也可以看出两个文件的不同

可以显示出当前的文本是  LF 还是 CRLF

 

⑦用 ll 查看当前文件大小

 

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒(注:估计是从打字机的最右边回到最左边的机械运动 所需要的时间),正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车(Carriage Return)”,告诉打字机把打印头定位在左边界;
另一个叫做“换行(Line Feed)”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

Unix系统里,每行结尾只有“LF”,即”\n”;
Windows系统里面,每行结尾是“LFCR”,即“\n\r”;
Mac系统里,每行结尾是“CR”,即”\r”;

一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

CRLF的意思

就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n) --- windows系统里面的字符
 

linux下vim 编辑的文本文件 可能会比其他的txt文本文件 多一个 \n

要解决两个文本不一致的问题,可以在没有\n的文本里面编辑一下vim 然后保存 

 

所生成ca证书的期限可以在 openssl

posted @ 2019-07-11 20:42  陈晓猛  阅读(1054)  评论(0编辑  收藏  举报