本页内容

  • Linux md5sum 命令
  • Q1. md5sum 命令是如何工作的?
  • Q2. 如何改变文件读取与校验和生成的方式?
  • Q3. 如何让 md5sum 忽略缺失的文件?
  • Q4. 如何让 md5sum 不为每个成功校验的文件打印 OK?
  • Q5. md5sum 如何计算校验和?

尽管我们已经讨论过 cksum 命令行工具,但在需要验证传输过程中文件完整性的场景下,还有另一个工具可以使用。这里要介绍的工具就是 md5sum。另一个常用于计算文件校验和的命令是 sha1sum。

本教程将通过易于理解的示例来讲解该命令的基本用法。

不过在此之前,值得一提的是,本文中的所有示例均在 Ubuntu 22.04 LTS 上进行了测试。

Linux md5sum 命令

md5sum 命令会计算并检查文件的 MD5(128 位)消息摘要。以下是该命令的语法:

md5sum [OPTION]... [FILE]...

下面这些问答形式的示例能让你更好地理解 md5sum 的工作方式。

Q1. md5sum 命令是如何工作的?

基本用法非常简单——如果你要计算某个文件的 MD5 校验和,只需将文件名作为输入传给该命令。例如:

md5sum testfile.txt

Linux md5sum 命令初学者入门教程含五个实例

你也可以将输出重定向到一个文本文件,以便日后根据文件是否被修改或损坏来核对摘要。

md5sum testfile.txt > digest.md5

使用 -c 命令行选项来检查摘要。

md5sum -c digest.md5

Linux md5sum 命令初学者入门教程含五个实例

如果文件发生了任何改动或损坏,md5sum 会输出类似下面的内容:

Linux md5sum 命令初学者入门教程含五个实例

Q2. 如何改变文件读取与校验和生成的方式?

默认情况下,md5sum 命令以文本模式读取输入。不过如果你愿意,也可以让该工具以二进制模式读取输入,只需使用 -b 命令行选项即可。

md5sum -b [filename]

你也可以使用 --tag 命令行选项,强制 md5sum 生成 BSD 风格的校验和。

Q3. 如何让 md5sum 忽略缺失的文件?

在校验校验和时,如果你希望 md5sum 对缺失的文件既不报错也不报告状态,可以使用 --ignore-missing 选项。下面的截图展示了该选项的效果:

Linux md5sum 命令初学者入门教程含五个实例

可以看到,在第二种情况下并没有产生错误提示和通知。

Q4. 如何让 md5sum 不为每个成功校验的文件打印 OK?

以下是 md5sum 的默认行为:

Linux md5sum 命令初学者入门教程含五个实例

不过,如果你不想看到每个成功校验文件的 OK 提示,可以使用 --quiet 选项。在我们这个例子中,上述命令就会变成:

md5sum -c --quiet digest.md5

Q5. md5sum 如何计算校验和?

校验和由该工具按照 RFC 1321 中的描述进行计算。以下是 man 手册中的说明:

       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 space, a character indicating input
       mode ('*' for binary, ' ' for text or where binary  is  insignificant),
       and name for each FILE.
       The MD5 algorithm should not be used any more for security related pur?
       poses.  Instead, better use an SHA-2 algorithm, implemented in the pro?
       grams sha224sum(1), sha256sum(1), sha384sum(1), sha512sum(1)

如果你是 Linux 命令行新手,早期使用 md5sum 的机会可能比较少。它主要面向系统管理员或专业用户。但掌握该工具的基本工作原理并无坏处,这也正是本教程的重点所在。如果想了解更多,详见 man 手册。