HOWTO · Bash

bash md5sum コマンド

このチュートリアルでは、Bash で md5sum コマンドを使用する方法を示します。

このページの内容

このチュートリアルでは、Bash で md5sum コマンドを使用する方法を示します。

Bash md5sum コマンド

md5sum コマンドは、指定されたファイルの 32 文字と 128 ビットのチェックサムを出力します。 このコマンドは、MD5 アルゴリズムを使用してファイルをハッシュに変換します。 このコマンドの構文は次のとおりです。

md5sum [OPTION]... [FILEPATH]...

次の内容のテキスト ファイルに対して単純な md5sum コマンドを実行してみましょう。

Hello! this is md5sum command checking from delftstack.com

ファイル名は delftstack1 です。 このファイルの md5sum コマンドは次のようになります。

md5sum delftstack1.txt

上記のコマンドは、ファイル delftstack1.txtmd5 ハッシュに変換します。 結果を参照してください。

7a09013df4a60cc5eda609d03008c547  delftstack1.txt

--tag オプションを使用して、この出力を BSD 形式で表示することもできます。

md5sum --tag delftstack1.txt

このコマンドの出力は次のようになります。

MD5 (delftstack1.txt) = 7a09013df4a60cc5eda609d03008c547

md5sum には、使用できるさまざまなオプションがあります。 下の表を参照してください。

左の列 右の列
-b バイナリ モードで結果を読み取るために使用されます。
-c 指定されたファイルから MD5 を読み取り、チェックするために使用されます。
–tag BSD スタイルのチェックサムで出力を取得するために使用されます。
-t デフォルトでもテキストモードで読むために使用します。
–ignore-missing 欠落ファイルのレポート ステータスを無視するために使用されます。
–quiet 検証に成功した各ファイルの OK の出力を停止するために使用されます。
–status ステータス コードが成功を示す出力を停止するために使用されます。
–strict 不適切にフォーマットされたチェックサム ファイルを非ゼロから終了するために使用されます。
-w 不適切にフォーマットされたチェックサム ファイルについて警告するために使用されます。

md5sum コマンドは、複数のファイルに対して一度に md5 を使用する、変更されたファイルのみを表示する、無効なハッシュ値を識別するなど、さまざまな方法で使用できます。

Bash で一度に複数のファイルで md5sum を使用する

md5sum を使用して、複数のファイルを同時に検証することもできます。 さらに 2つのテキスト ファイルを作成し、3つのファイルすべてを一度に検証してみましょう。

delftstack2.txt:

Hello! this is md5sum command checking from delftstack.com file 2

delftstack3.txt:

Hello! this is md5sum command checking from delftstack.com file 3

一度に複数のファイルのハッシュを取得するコマンドは次のとおりです。

md5sum delftstack1.txt delftstack2.txt delftstack3.txt > hashes

上記のコマンドは、ファイルをハッシュに変換するだけで、出力は表示しません。 出力を表示するには、次のコマンドを実行する必要があります。

md5sum --check hashes

上記のコマンドは、ファイルが正常にハッシュに変換されたかどうかを示します。 出力を参照してください。

delftstack1.txt: OK
delftstack2.txt: OK
delftstack3.txt: OK

md5sum を使用して Bash で変更されたファイルを表示する

md5sum コマンドは、複数のファイルに md5sum を適用しながら、変更されたファイルを表示することもできます。 まず、ファイルを変更するには、次のコマンドを使用します。

echo "!" >> delftstack1.txt

上記のコマンドは、ファイル delftstack1.txt を変更します。 次に、md5sum オプションを使用して、変更されたファイルを表示しましょう。

次のコマンドを参照してください。

md5sum --quiet --check hashes

上記のコマンドは、変更されたファイルを検索し、出力に名前を出力します。 出力を参照してください。

delftstack1.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

md5sum を使用して Bash で無効なハッシュ値を特定する

md5sum コマンドをオプション付きで使用して、無効なファイルを特定することもできます。 このために、-warn オプションと sed コマンドを使用して余分な文字を挿入し、ファイルを無効にします。

最初のコマンドを参照してください。

sed -i '1s/.*/a&/' hashes

上記のコマンドは、抽出文字を出力の最初の行に追加します。 このコマンドの出力を参照してください。

sed: -e expression #1, char 2: extra characters after command

次に、--warn オプションを指定した md5sum コマンドを使用して、無効なハッシュ値をチェックしてみましょう。 次のコマンドを参照してください。

md5sum --warn --check hashes

上記は、出力に無効なハッシュ値を持つファイルを表示します。 出力を参照してください。

delftstack1.txt: FAILED
delftstack2.txt: OK
delftstack3.txt: OK
md5sum: WARNING: 1 computed checksum did NOT match

Bash でファイル名なしで md5sum 出力を取得する

ご覧のとおり、md5sum はファイル名を含むハッシュ出力を返しますが、さらに使用できるように、ファイル名なしで出力を取得する必要がある場合があります。 これに対する解決策は、テキスト処理、データ抽出、およびレポート ツールに使用されるドメイン固有の言語である awk コマンドです。

次のポイントに従って、Bash でファイル名なしで出力を取得します。

  1. 出力を変数に割り当てます。
  2. まず、与えられたファイルに対して md5sum を実行し、awk コマンドを使用して $1 を出力します。

次のコマンドを参照してください。

DemoMD5= md5sum delftstack1.txt | awk '{ print $1 }'

上記は md5sum 出力からのハッシュ出力のみを返します。

出力:

698ac7ad395a9c887b1abf3c9ded7abe

awk コマンドを使用したくない場合は、ファイル名なしで md5sum からハッシュ出力を直接取得できる別の方法があります。 md5sum 出力を配列に割り当ててから、出力します。

コマンドを参照してください。

DemoMD5=($(md5sum delftstack1.txt))
echo $DemoMD5

上記のコマンドは、md5sum のファイル名なしでハッシュ出力も直接取得します。 出力を参照してください。

698ac7ad395a9c887b1abf3c9ded7abe