是否可以在shell中生成校验和(md5)字符串?

时间:2016-06-02 14:29:59

标签: bash shell md5 checksum

我想拥有一个文件名的唯一ID,所以我可以迭代ID并比较文件的校验和? 是否可以为文件名设置校验和,以便每个文件名都有唯一的ID? 我欢迎其他想法。

3 个答案:

答案 0 :(得分:3)

这是你想要的吗?

普通字符串:

serce@unit:~$ echo "Hello, checksum!" | md5sum
9f898618b071286a14d1937f9db13b8f  -

文件内容:

serce@unit:~$ md5sum agent.yml
3ed53c48f073bd321339cd6a4c716c17  -

答案 1 :(得分:3)

是的,可以使用md5sumbasename $0提供当前文件的名称

假设我的脚本如下md5Gen.sh

#!/bin/bash

mdf5string=$(basename "$0" | md5sum )
echo -e `basename "$0"` $mdf5string

运行脚本会给我

md5Gen.sh 911949bd2ab8467162e27c1b6b5633c0 -

答案 2 :(得分:1)

是的,可以获得字符串的MD5:

$ printf '%s' "This-Filename" | md5sum
dd829ba5a7ba7bdf7a391f2e0bd7cd1f  -

重要的是要理解打印字符串末尾没有换行符。 bash中的等价物是使用echo -n

$ echo -n "This-Filename" | md5sum
dd829ba5a7ba7bdf7a391f2e0bd7cd1f  -

-n(在bash中有效)很重要,否则你的哈希值会随着包含不属于文本的换行符而改变:

$ echo "This-Filename" | md5sum
7ccba9dffa4baf9ca0e56c078aa09a07  -

这也适用于文件内容:

$ echo -n "This-Filename" > infile
$ md5sum infile
dd829ba5a7ba7bdf7a391f2e0bd7cd1f  infile

$ echo "This-Filename" > infile
$ md5sum infile
7ccba9dffa4baf9ca0e56c078aa09a07  infile