初学者的Linux md5sum命令解释(5个例子)

初学者的Linux md5sum命令解释(5个例子)

在下载文件时,尤其是从网站安装文件时,验证下载是否有效是个好主意。 网站通常会为每个文件显示一个散列值,以便确保下载正确完成。 在本文中,我们将讨论可用于验证下载的md5sum工具。 其他两个工具sha256sum和sha512sum的工作方式与md5sum相同。

Linux md5sum命令

md5sum命令使用MD5算法打印给定文件的32个字符(128位)校验和。 以下是这个命令行工具的命令语法:

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

以下是md5sum的手册页是如何解释的:

Print or check MD5 (128-bit) checksums.

下面的Q&A样式的例子会给你一个关于md5sum基本用法的更好的概念。

注意:在我们的示例中,我们将使用三个名为file1.txt,file2.txt和file3.txt的文件作为输入文件。 下面列出了每个文件中的文本。

FILE1.TXT:

hi
hello
how are you
thanks.

FILE2.TXT:

hi
hello to you
I am fine
Your welcome!

file3.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
[lion@ornatecandy 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的更多信息,请参见手册页。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏