use*_*067 14 command-line hashsum checksum command sha1sum
是否可以在没有-附加到末尾的情况下打印 SHA 总和?
$ echo test | sha1sum
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83 - <--- this "-" dash/hyphen
Run Code Online (Sandbox Code Playgroud)
我知道我们可以使用awk和其他命令行工具,但是可以不使用其他工具来完成吗?
$ echo test | sha1sum | awk '{print $1}'
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83
Run Code Online (Sandbox Code Playgroud)
小智 9
由于 sha1sum 散列长度为 40 个字符,因此您可以将输出通过管道传输到 head 命令并从中提取前 40 个字符:
echo test | sha1sum | head -c 40
Run Code Online (Sandbox Code Playgroud)
来源:https : //stackoverflow.com/a/14992739/4642023
如果没有其他工具或没有编辑实际的 sha1sum 脚本/二进制文件,这是不可能的。当 sha1sum 被提供一个文件时,它会在总和之后打印文件名。当 sha1sum 未提供文件或与管道一起使用时。它将 - 放在那里作为占位符,以指示输入不是文件。
h=($(echo test | sha1sum )) ;echo $h
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83
Run Code Online (Sandbox Code Playgroud)
或者
h=( `echo test | sha1sum` ) ;echo $h
Run Code Online (Sandbox Code Playgroud)
在 bash 中,它使用 h 的“数组”声明创建一个多索引的令牌数组。使用 $h 再次引用变量,索引数组与 ${h[0]} 相同
h=`echo test | sha1sum` ;echo ${h// */}
Run Code Online (Sandbox Code Playgroud)
或 posix shell (sh, dash, bash) 删除后缀 %
h=`echo test | sha1sum` ;echo ${h%-}
Run Code Online (Sandbox Code Playgroud)
尽管使用数组是更直观的选择,但也可能会成功。
xxd + base64 可用于增加可打印字符范围的熵(减少位数)
h=($(echo test | sha1sum )) ;echo $h|xxd -r -p |base64
ThJDvSLGbnbCup7dwfkTlOV/n4M=
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6445 次 |
| 最近记录: |