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

Bash 是否可以在shell中生成字符串校验和(md5)?,bash,shell,md5,checksum,Bash,Shell,Md5,Checksum,我希望文件名有一个唯一的ID,这样我就可以迭代ID并比较文件的校验和? 是否可以对文件名进行校验和,以便每个文件名都有一个唯一的ID? 我欢迎其他想法。这是你想要的吗 纯字符串: serce@unit:~$ echo "Hello, checksum!" | md5sum 9f898618b071286a14d1937f9db13b8f - 和文件内容: serce@unit:~$ md5sum agent.yml 3ed53c48f073bd321339cd6a4c716c17 - 是

我希望文件名有一个唯一的ID,这样我就可以迭代ID并比较文件的校验和? 是否可以对文件名进行校验和,以便每个文件名都有一个唯一的ID? 我欢迎其他想法。

这是你想要的吗

纯字符串:

serce@unit:~$ echo "Hello, checksum!" | md5sum
9f898618b071286a14d1937f9db13b8f  -
和文件内容:

serce@unit:~$ md5sum agent.yml
3ed53c48f073bd321339cd6a4c716c17  -
是的,可以使用md5sum和basename$0给出当前文件的名称

假设我的脚本名为md5Gen.sh,如下所示

运行脚本会让我

md5Gen.sh 911949bd2ab8467162e27c1b6b5633c0 -

可以,可以获取字符串的MD5:

$ printf '%s' "This-Filename" | md5sum
dd829ba5a7ba7bdf7a391f2e0bd7cd1f  -
重要的是要理解打印字符串的末尾没有换行符。bash中的一个等价物是使用echo-n:

bash中的-n valid很重要,因为否则,您的散列将随着包含不属于文本一部分的换行而改变:

$ echo "This-Filename" | md5sum
7ccba9dffa4baf9ca0e56c078aa09a07  -
这也适用于文件内容:

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

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

文件内容案例应该与简单的mdsum agent.yml一起使用,您不需要使用catIf。如果您想要唯一的文件名,可以尝试使用mktemp
$ echo "This-Filename" | md5sum
7ccba9dffa4baf9ca0e56c078aa09a07  -
$ echo -n "This-Filename" > infile
$ md5sum infile
dd829ba5a7ba7bdf7a391f2e0bd7cd1f  infile

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