Linux:md5sum指令

ShineLe發表於2024-09-05

學習自:

Linux shell程式設計學習筆記42:md5sum_PurpleEndurer@5lcto的技術部落格_51CTO部落格

MD5SUM詳解_md5sum命令詳解-CSDN部落格

0、常用

#校驗檔案
md5sum 1.txt
f447b20a7fcbf53a5d5be013ea0b15af  1.txt

#校驗標準輸入
echo "123456" | md5sum
f447b20a7fcbf53a5d5be013ea0b15af -

1、簡介

MD5即Message-Digest Algorithm 5(資訊-摘要演算法5),用於確保資訊傳輸完整一致

如果一個檔案的內容不改變,那麼該檔案的MD5值也不會變化。

即使檔名變了,但是隻要檔案內容不變,其MD5值也不會改變。

通常用於在傳輸檔案時校驗檔案完整性

2、用法

md5sum 選項 檔案

返回值

①校驗碼(當選項為b、c、t時);

②校驗結果(OK、FAILED,當選項為c時)

可以用md5sum 選項 檔案 > xxx.md5的方式將校驗和儲存到md5檔案中

說明

當檔案為-時,校驗內容為標準輸入

例如:

echo "123456" | md5sum

3、選項

選項

用法

說明

-b

--binary

以二進位制模式讀取檔案 GNU系統上,二進位制檔案和文字檔案無區別

-c

--check

從FILE中讀取MD5校驗和並檢驗
--tag 建立BSD樣式的校驗和

-t

--text

以文字模式讀取檔案(預設)
--quiet 不為成功驗證的檔案列印OK 僅在驗證校驗和時有用(也就是說和引數-c配合出現)
--status 不輸出任何內容,用狀態碼表示成功
--strict 當校驗到格式不正確的校驗行時,用非0退出

-w

--warn

當校驗到格式不正確的校驗行時,發出警告
--version 顯示版本
--help 顯示幫助

4、例子

1)預設文字模式(-t)讀取檔案,輸出md5校驗和

echo "123456" > 1.txt
md5sum 1.txt
f447b20a7fcbf53a5d5be013ea0b15af  1.txt

2)二進位制模式(-b)讀取檔案,輸出md5校驗和

md5sum -b 1.txt
f447b20a7fcbf53a5d5be013ea0b15af *1.txt

相比文字模式,被讀取的檔名前多了一個*。

3)預設文字模式讀取標準輸入,輸出md5校驗和

echo "123456" | md5sum
f447b20a7fcbf53a5d5be013ea0b15af -

由於未指定檔案,所以顯示的檔名為-,代表標準輸入。

如果不用echo命令:

"123456" | md5sum

-bash: 123456: 未找到命令
d41d8cd98f00b204e9800998ecf8427e  -

仍會輸出md5校驗值,但在此之前會顯示一條錯誤資訊:命令未找到

4)二進位制模式讀取標準輸入,輸出md5校驗和

echo "123456" | md5sum -b

f447b20a7fcbf53a5d5be013ea0b15af *-

5)用md5校驗值校驗檔案,選項-c

md5檔案存放的是校驗和

echo "123456" > 1.txt
md5sum 1.txt > 123456.md5

cat 123456.md5 f447b20a7fcbf53a5d5be013ea0b15af 1.txt
md5sum -c 123456.md5 1.txt: 成功
echo "12345678" > 1.txt
md5sum -c 123456.md5 1.txt: 失敗 md5sum: 警告:1 個校驗和不匹配

md5檔案中,存放了一個校驗碼及它對應的檔名1.txt。

當修改1.txt的檔案內容後,校驗碼隨之發生變化,與md5檔案存放的校驗碼內容不一致,因此用-c檢查後,返回失敗

6)用md5校驗值校驗檔案,校驗成功時不列印OK:--quiet

echo "123456" > 1.txt
md5sum  1.txt > 123456.md5
md5sum -c --quiet 123456.md5
#校驗透過時,不輸出OK
echo "123" > 1.txt md5sum -c --quiet 123456.md5 1.txt: 失敗 md5sum: 警告:1 個校驗和不匹配

7)用md5校驗檔案,透過狀態碼反饋校驗結果:--quiet --status

狀態碼為0時,校驗透過;為1時,不透過。

echo "123456" > 1.txt
md5sum 1.txt > 123456.md5
md5sum -c --quiet --status 123456.md5
echo $?
0
echo "123" > 1.txt md5sum -c --quiet --status 123456.md5 echo $? 1

$?:程序狀態碼。

相關文章