Prostszy sposób porównywania sumy kontrolnej MD5?

11

Po pobraniu pliku z dostępną sumą kontrolną md5 aktualnie go sprawdzam

md5 *file* | grep *given_checksum*

na przykład

md5 file.zip | grep -i B4460802B5853B7BB257FBF071EE4AE2

ale wydawało mi się zabawne wymagać grep i fajki do tego, co z pewnością jest bardzo częstym zadaniem. Zwolennik efektywnego robienia rzeczy. Zastanawiałem się, czy istnieje lepszy sposób na robienie tego?

Ben Griffiths
źródło
Co to za narzędzie md5? Z którego pakietu pochodzi?
manatwork
Nie zdawałem sobie sprawy, że było inaczej, dopóki nie zadałem tego pytania i nie zacząłem szukać odpowiedzi, ale używam bash na OS X i jest to własne narzędzie Apple'a, które nie ma opcji -c. Najwyraźniej przestali pakować md5sum w 10.5 ... Zainstalowałem już oryginalne uniksowe narzędzie md5sum.
Ben Griffiths,

Odpowiedzi:

20

md5summa -copcję sprawdzenia istniejącego zestawu sum, a jego status wyjścia wskazuje na sukces / porażkę.

Przykład:

$ echo "ff9f75d4e7bda792fca1f30fc03a5303  package.deb" | md5sum -c -
package.deb: OK

Znajdź miły zasób tutaj

psusi
źródło
4
Dzięki. Na zakończenie używam teraz, md5sum -c - <<<"b4460802b5853b7bb257fbf071ee4ae2 file_name.ext"co wydaje się czystsze niż angażowanie grep!
Ben Griffiths,
hmm, niewiele ulepszeń do oryginalnego pliku $ md5 | grep dany_checksum i jeśli chcesz użyć łańcucha bez rozróżniania wielkości liter, musisz trzymać się grep -i
StandardNerd
Dostawałem, no properly formatted MD5 checksum lines foundkiedy używałem, md5sum -c <file.md5> <file>ale to polecenie działało dla mnie.
Vishrant,
1

Zwykłym sposobem bash byłoby:

shopt -s nocasematch
if [[ $(md5sum "$file") = 5d40f31729c992b5a0e67490689fe8ff* ]]
Hauke ​​Laging
źródło
1
md5sum -c <filename>.zip.md5 <filename>.zip

To powie ci Ok, jeśli są takie same.

Działa to również ze smołą.

Anthony Petrillo
źródło
0

Zainspirowany odpowiedzią psusi

echo "$(cut -f1 -d' ' your_file.jar.md5) your_file.jar" | md5sum -c -

Użyłem, cutponieważ nie wszystkie md5są przechowywane w ten sam sposób. Przykład

Vishrant
źródło