Bash 是否可以在shell中生成字符串校验和(md5)?
我希望文件名有一个唯一的ID,这样我就可以迭代ID并比较文件的校验和? 是否可以对文件名进行校验和,以便每个文件名都有一个唯一的ID? 我欢迎其他想法。这是你想要的吗 纯字符串: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 - 是
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