學習自:
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
$?:程序狀態碼。