仿阿里云网站,wordpress悬浮播放器,企业网页设计,学院网站设计模板0 前言
前几天在国产电脑上遇到一个问题#xff0c;先后接到两个文件#xff0c;如何判断这两个文件内容是否相同#xff1f;
如果是在Windows系统#xff0c;可以用fc命令#xff0c;或者用我自己写的FileInfo#xff0c;提取两个文件有MD5、SHA1、CRC32值进行比较来判…
0 前言
前几天在国产电脑上遇到一个问题先后接到两个文件如何判断这两个文件内容是否相同
如果是在Windows系统可以用fc命令或者用我自己写的FileInfo提取两个文件有MD5、SHA1、CRC32值进行比较来判断。
其实在Linux系统中提供了md5sum命令来计算md5值。
MD5 全称是报文摘要算法Message-Digest Algorithm 5可以对任意长度的信息逐位进行计算产生一个二进制长度为128位十六进制长度就是32位的校验值checksums或称“指纹”“报文摘要”不同的信息产生相同的报文摘要的可能性是非常非常之小的。 1 md5sum命令的功能和格式
我们可以使用命令 md5sum --help命令 查看它的用法 purpleEndurer bash \w $ md5sum --help Usage: md5sum [OPTION]... [FILE]... Print or check MD5 (128-bit) checksums. With no FILE, or when FILE is -, read standard input. -b, --binary read in binary mode -c, --check read MD5 sums from the FILEs and check them --tag create a BSD-style checksum -t, --text read in text mode (default) Note: There is no difference between binary and text mode option on GNU system. The following four options are useful only when verifying checksums: --quiet dont print OK for each successfully verified file --status dont output anything, status code shows success --strict exit non-zero for improperly formatted checksum lines -w, --warn warn about improperly formatted checksum lines --help display this help and exit --version output version information and exit The sums are computed as described in RFC 1321. When checking, the input should be a former output of this program. The default mode is to print a line with checksum, a character indicating input mode (* for binary, space for text), and name for each FILE. GNU coreutils online help: http://www.gnu.org/software/coreutils/ Report md5sum translation bugs to http://translationproject.org/team/ For complete documentation, run: info coreutils md5sum invocation purpleEndurer bash \w $ 1.1 md5sum命令的功能
采用MD5报文摘要算法打印或校验 MD5 (128-位) 校验值。
1.2 md5sum命令的格式 md5sum [选项]... [文件]... 1.2.1 选项及功能
选项说明备注 -b --binary 以二进制模式读取文件GNU系统上的二进制模式选项和文本模式选项之间没有区别 -c --check 从 FILE 中读取 MD5 总和并检查它们--tag创建一个 BSD 样式的校验和 -t --text 以文本模式读取文件默认GNU系统上的二进制选项和文本模式选项之间没有区别--quiet不要为每个成功验证的文件打印 OK这四个选项仅在验证校验和时有用--status不输出任何内容状态代码显示成功--strict退出非零用于格式不正确的校验行 -w --warn 发现格式不正确的校验行时进行警告--help显示此帮助并退出--version输出版本信息并退出
1.2.2 其它说明
如果没有 指定文件或者当 文件 为 - 时读取标准输入。
2 md5sum命令使用实例
2.1 用默认的文本模式读取指定文件并输出md5校验值 purpleEndurer bash ~ $ echo 123456 1.txt purpleEndurer bash ~ $ md5sum 1.txt f447b20a7fcbf53a5d5be013ea0b15af 1.txt 我们先用 echo命令创建文件1.txt文件内容是123456
然后我们用md5sum命令来输出文件1.txt的md5校验值f447b20a7fcbf53a5d5be013ea0b15af
2.2 用二进制模式读取指定文件并输出md5校验值 purpleEndurer bash ~ $ md5sum -b 1.txt f447b20a7fcbf53a5d5be013ea0b15af *1.txt 可以看到当我们指定用二进制模式读取时被读取的文件名名前多了一个*。
2.3 用默认的文本模式读取指定字符串并输出md5校验值 purpleEndurer bash ~ $ echo 123456 | md5sum f447b20a7fcbf53a5d5be013ea0b15af - 由于我们没有指定文件所以显示的文件名是-代表标准输入。
如果我们不使用echo命令 purpleEndurer bash ~ $ 123456 | md5sum bash: 123456: command not found d41d8cd98f00b204e9800998ecf8427e - 仍然可以获得 md5校验值不过在此之前会显示一条错误信息bash: 123456: command not found。 2.4 用二进制模式读取指定字符串并输出md5校验值 purpleEndurer bash ~ $ echo 123456 | md5sum -b f447b20a7fcbf53a5d5be013ea0b15af *- 同样代表标准输入的-前有*。
2.5 md5sum -c md5文件用md5校验值校验文件 purpleEndurer bash \w $ echo 123456 1.txt purpleEndurer bash \w $ md5sum 1.txt 123456.md5 purpleEndurer bash \w $ cat 123456.md5 f447b20a7fcbf53a5d5be013ea0b15af 1.txt purpleEndurer bash \w $ md5sum -c 123456.md5 1.txt: OK purpleEndurer bash \w $ echo 12345678 1.txt purpleEndurer bash \w $ md5sum -c 123456.md5 1.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match purpleEndurer bash \w $ 我们先用 命令 echo 123456 1.txt 创建文件1.txt文件内容是123456
接着使用命令 md5sum 1.txt 123456.md5 将文件 1.txt的md5校验值保存到文件 123456.md5
然后用命令 cat 123456.md5 查看 文件 123456.md5的内容。
再用命令md5sum -c 123456.md5 来对文件1.txt进行校验结果 1.txt: OK 接着我们使用命令 echo 12345678 1.txt 文件1.txt的内容改为12345678
再用命令md5sum -c 123456.md5 来对文件1.txt进行校验结果 1.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match 2.6 md5sum -c --quiet md5文件用md5校验值校验文件文件成功验证时不打印 OK purpleEndurer bash \w $ echo 123456 1.txt purpleEndurer bash \w $ md5sum -c --quiet 123456.md5 purpleEndurer bash \w $ echo 12345678 1.txt purpleEndurer bash \w $ md5sum -c --quiet 123456.md5 1.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match purpleEndurer bash \w $ 这里我们先后执行了两次命令md5sum -c --quiet 123456.md5注意两次命令反馈信息的差异。
当我们第一次执行命令md5sum -c --quiet 123456.md5时由于验证成功所以没有显示信息。
当我们修改了1.txt文件的内容后第二次执行命令md5sum -c --quiet 123456.md5时由于验证不成功所以看到了信息 1.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match 2.7 md5sum -c --quiet --status md5文件用md5校验值校验文件通过状态代码反馈校验是否成功 purpleEndurer bash \w $ echo 123456 1.txt purpleEndurer bash \w $ md5sum 1.txt 123456.md5 purpleEndurer bash \w $ md5sum -c --quiet --status 123456.md5 purpleEndurer bash \w $ echo $? 0 purpleEndurer bash \w $ echo 12345678 1.txt purpleEndurer bash \w $ md5sum -c --quiet --status 123456.md5 purpleEndurer bash \w $ echo $? 1 purpleEndurer bash \w $ 由于指定了--status选项所以不论md5sum命令对文件校验是否成功都不会显示信息我们可以使用$?获取命令的状态代码来判断校验是否成功。
当我们第一次执行命令md5sum -c --quiet --status 123456.md5时由于验证成功$?的值为0。
当我们修改了1.txt文件的内容后第二次执行命令md5sum -c --quiet 123456.md5时由于验证不成功$?的值为1。