6

BSDmd5プログラムがこの形式でハッシュ出力を生成する理由は誰でも知っています...

MD5 (checksum.md5) = 9eb7a54d24dbf6a2eb9f7ce7a1853cd0

... GNU md5sumは、このようなはるかに賢明な形式を生成しますか?

9eb7a54d24dbf6a2eb9f7ce7a1853cd0 checksum.md5

私の知る限り、md5sum形式は解析がはるかに簡単で、より理にかなっています。md5sum -checkmd5はどうしますか?そして、-p、-q、-r、-t、-xオプションはどういう意味ですか?man md5それらのオプションについては何も言いません!:|

4

4 に答える 4

5

歴史的な理由だと思います。一方、 -q は "MD5(...) = " 出力を抑制するため、 md5 -q checksum.md5 は

9eb7a54d24dbf6a2eb9f7ce7a1853cd0

これは、md5 に引数が与えられておらず、stdin から読み取る場合に暗示されます。残念ながら、この場合の md5sum はチェックサムの後ろに「-」を残します (「9eb7a54d24dbf6a2eb9f7ce7a1853cd0 -」)。そのため、チェックサムを返す汎用関数を探している場合は、次のものが役立ちます。

チェックサム() {
        (md5sum <"$1"; テスト $? = 127 && md5 <"$1") | カット -d'' -f1
}
チェックサム /etc/hosts

FreeBSD の man ページには、引数について書かれています

   -p stdin を stdout にエコーし、チェックサムを stdout に追加します。

 -q      Quiet mode ‐ only the checksum is printed out.  Overrides the -r
         option.

 -r      Reverses the format of the output.  This helps with visual diffs.
         Does nothing when combined with the -ptx options.

 -t      Run a built‐in time trial.

 -x      Run a built‐in test script.

于 2009-08-20T10:31:43.670 に答える
2

これは古いページだと思いますが、FreeBSD でチェックサムを作成し、Linux でチェックしていて、このページにも出くわしました。このページは問題の解決に役立たなかったので、Linux の出力sedと一致する FreeBSD のチェックサムを作成するこの小さなスクリプトを思いつきました。md5sum

md5 file [file ...] | sed -e 's#^MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#' > md5sums.txt

これは FreeBSDmd5コマンドを使用し、出力を GNU のように並べ替えますmd5sum

次に、Linuxで使用できますmd5sum --check md5sums.txt

sedFreeBSD のmd5コマンドによって生成された既存のファイルで上記のスクリプトを使用することもできます。

また、このエイリアスを FreeBSD .cshrc ファイルに入れました。

alias md5sum "md5 \!* | sed -e '"'s#MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#'"'"

今、FreeBSD で私はただ言うことができmd5sum file1 file2 file3 ...、それはただ動作します。

于 2013-12-23T01:34:13.910 に答える