为初学者解释的 Linux md5sum 命令(5 个示例)
在此页
- Linux md5sum 命令
- Q1。如何显示哈希值?
- Q2。如何一次验证多个文件?
- Q3。如何只显示修改过的文件?
- Q4。如何检测脚本中的更改?
- Q5。如何识别无效哈希值?
- 结论
下载文件时,尤其是安装通过 Torrent 协议或 FTP 服务器从网站下载的文件时,最好验证下载是否有效。网站通常会显示每个文件的哈希值,以确保下载正确完成。本文将讨论可用于验证下载的 md5sum 命令。其他三个实用程序 sha1sum、sha256sum 和 sha512sum 的工作方式与 md5sum 相同。本教程与所有主要 Linux 发行版兼容。
Linux md5sum 命令
md5sum 命令使用 MD5 算法打印给定文件的 32 个字符(128 位)校验和。以下是此命令行工具的命令语法:
md5sum [OPTION]... [FILE]...
以下是 md5sums 手册页对其的解释:
Print or check MD5 (128-bit) checksums.
以下问答式示例将让您更好地了解 md5sum 的基本用法。
注意:我们将使用名为 file1.txt、file2.txt 和 file3.txt 的三个文件作为输入文件在我们的例子中。下面列出了每个文件中的文本。
file1.txt:
hi
hello
how are you
thanks.
文件2.txt:
hi
hello to you
I am fine
Your welcome!
文件 3.txt:
hallo
Guten Tag
Wie geht es dir
Danke.
Q1。如何显示哈希值?
使用不带任何选项的命令显示哈希值和文件名。
md5sum file1.txt
这是此命令在我们的系统上产生的输出:
[Documents]$ md5sum file1.txt
1ff38cc592c4c5d0c8e3ca38be8f1eb1 file1.txt
[Documents]$

也可以使用 --tag 选项以 BSD 风格的格式显示输出。
md5sum --tag file1.txt
[Documents]$ md5sum --tag file1.txt
MD5 (file1.txt) = 1ff38cc592c4c5d0c8e3ca38be8f1eb1
[Documents]$
Q2。如何一次验证多个文件?
md5sum 命令可以一次验证多个文件。我们将添加 file2.txt 和 file3.txt 来演示功能。
如果将散列值写入文件,则可以使用该文件检查是否有任何文件已更改。在这里,我们将文件的哈希值写入文件哈希值,然后使用它来验证没有任何文件发生更改。
md5sum file1.txt file2.txt file3.txt > hashes
md5sum --check hashes
[Documents]$ md5sum file1.txt file2.txt file3.txt > hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: OK
[Documents]$
现在我们将更改 file3.txt,在文件末尾添加一个感叹号,然后重新运行该命令。
echo "!" >> file3.txt
md5sum --check hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$
可以看到 file3.txt 发生了变化。
Q3.如何只显示修改过的文件?
如果您有许多文件要检查,您可能希望只显示已更改的文件。使用“--quiet”选项,md5sum 将只列出已更改的文件。
md5sum --quiet --check hashes
[Documents]$ md5sum --quiet --check hashes
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$
Q4.如何检测脚本中的更改?
您可能想在脚本中使用 md5sum。使用“--status”选项,md5sum 不会打印任何输出。相反,如果没有更改,状态代码返回 0,如果文件不匹配,则状态代码返回 1。由于文件已更改,以下脚本 hashes.sh 将在状态代码中返回 1。脚本文件如下:
sh hashes.sh
hashes.sh:
#!/bin/bash
md5sum --status --check hashes
Result=$?
echo "File check status is: $Result"
exit $Result
[Documents]$ sh hashes.sh
File check status is: 1
[ Documents]$
Q5.如何识别无效哈希值?
md5sum 可以让您知道比较文件时是否有无效的哈希值。要在任何哈希值不正确时发出警告,您可以使用 --warn 选项。对于最后一个示例,我们将使用 sed 在第三行的开头插入一个额外的字符。这将更改文件哈希中的哈希值,使其无效。
sed -i '3s/.*/a&/' hashes
md5sum --warn --check hashes
这表明第三行有一个无效的散列。
[Documents]$ sed -i '3s/.*/a&/' hashes
[Documents]$ md5sum --warn --check hashes
file1.txt: OK
file2.txt: OK
md5sum: hashes: 3: improperly formatted MD5 checksum line
md5sum: WARNING: 1 line is improperly formatted
[Documents]$
结论
md5sum 是一个简单的命令,可以快速验证一个或多个文件以确定它们中的任何一个是否已从原始文件更改。有关 md5sum 的更多信息,请参见其手册页。