BASH脚本基础:使用md5sum命令生成消息摘要指纹与验证

上篇文章介绍了MD5和md5命令的使用,这篇文章继续介绍md5sum命令的使用方法。


MD5介绍 与 验证环境

请参看: https://liumiaocn.blog.csdn.net/article/details/108178856

liumiaocn:Desktop liumiao$ md5sum --version
md5sum (GNU coreutils) 8.31
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Ulrich Drepper, Scott Miller, and David Madore.
liumiaocn:Desktop liumiao$

命令:md5sum

使用方式1: 生成指定文件的MD5值

执行命令:md5 文件名称

  • 执行示例
liumiaocn:Desktop liumiao$ echo -n "liumiao" >sourcefile
liumiaocn:Desktop liumiao$ md5sum sourcefile
5fbb93bc914969ed10eb26e8817a5da6  sourcefile
liumiaocn:Desktop liumiao$ 

注:生成的MD5值中不包含换行,如果包含换行符,MD5值为

liumiaocn:Desktop liumiao$ echo "liumiao" |md5sum
acfac80dc86bf1863f902367090fa47c  -
liumiaocn:Desktop liumiao$ 

另外,md5值与使用md5命令生成的也相同

liumiaocn:Desktop liumiao$ echo -n "liumiao" | md5
5fbb93bc914969ed10eb26e8817a5da6
liumiaocn:Desktop liumiao$ echo "liumiao" | md5
acfac80dc86bf1863f902367090fa47c
liumiaocn:Desktop liumiao$ 

使用方式2: 通过MD5值验证文件完整性

提供了-c参数,用于校验是否一致

执行命令:md5 -c 包含MD5值和文件名的文件

文件内容格式:MD5值 文件名
注意事项:文件名如果是相对路径的话,需要注意“包含MD5值和文件名的文件”的位置不可随意移动

  • 执行示例
liumiaocn:Desktop liumiao$ md5sum sourcefile >sourcefile.md5
liumiaocn:Desktop liumiao$ cat sourcefile.md5 
5fbb93bc914969ed10eb26e8817a5da6  sourcefile
liumiaocn:Desktop liumiao$ 
liumiaocn:Desktop liumiao$ md5sum -c sourcefile.md5 
sourcefile: OK
liumiaocn:Desktop liumiao$ 

使用方式3: 验证多个文件验证文件完整性

执行命令:md5 -c MD5值和校验文件

  • 执行示例
liumiaocn:Desktop liumiao$ which md5sum
/usr/local/bin/md5sum
liumiaocn:Desktop liumiao$ md5sum /usr/local/bin/md5sum
982133ed548e3623b31754d4908f3e27  /usr/local/bin/md5sum
liumiaocn:Desktop liumiao$ md5sum /usr/local/bin/md5sum >>sourcefile.md5 
liumiaocn:Desktop liumiao$ cat sourcefile.md5 
5fbb93bc914969ed10eb26e8817a5da6  sourcefile
982133ed548e3623b31754d4908f3e27  /usr/local/bin/md5sum
liumiaocn:Desktop liumiao$ md5sum -c sourcefile.md5 
sourcefile: OK
/usr/local/bin/md5sum: OK
liumiaocn:Desktop liumiao$ 

使用方式4: status和quiet选项

执行命令:md5 -c --status --quiet MD5值和校验文件

  • 执行示例

首先准备错误的目录信息的文件sourcefile.md5.error

liumiaocn:Desktop liumiao$ diff sourcefile.md5 sourcefile.md5.error 
1c1
< 5fbb93bc914969ed10eb26e8817a5da6  sourcefile
---
> 5fbb93bc914969ed10eb26e8817a5da6  sourcefile/xx
liumiaocn:Desktop liumiao$ 

不加其他选项时,输出是这样的

liumiaocn:Desktop liumiao$ md5sum -c sourcefile.md5.error 
md5sum: sourcefile/xx: Not a directory
sourcefile/xx: FAILED open or read
/usr/local/bin/md5sum: OK
md5sum: WARNING: 1 listed file could not be read
liumiaocn:Desktop liumiao$ 

可以看到,加上quiet之后,本来会输出的OK行的信息不再显示

liumiaocn:Desktop liumiao$ md5sum -c --quiet sourcefile.md5.error 
md5sum: sourcefile/xx: Not a directory
sourcefile/xx: FAILED open or read
md5sum: WARNING: 1 listed file could not be read
liumiaocn:Desktop liumiao$ echo $?
1
liumiaocn:Desktop liumiao$ 

加上status选项之后,输出结果如下所示

liumiaocn:Desktop liumiao$ md5sum -c --quiet --status sourcefile.md5.error 
md5sum: sourcefile/xx: Not a directory
liumiaocn:Desktop liumiao$ echo $?
1
liumiaocn:Desktop liumiao$ 

你可能感兴趣的:(#,Shell脚本编程,MD5,md5sum)