从 macOS 中的“shasum”获取没有文件名的 SHA256 文件哈希值

KEI*_*NOS 4 macos bash hash sha256

在 macOS (Mojave) 上,“shasum”命令不是有一个选项,它只返回没有文件名的哈希值吗?

$ shasum -a 256 archive.tar.gz
35fe34e225a06d......00e72ee61a437b7226f9f   archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

我当前在 macOS 的默认状态下工作的解决方法(无需额外安装):

$ shasum -a 256 archive.tar.gz | awk '{ print $1 }'
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)
$ php -r "echo hash_file('sha256', 'archive.tar.gz'), PHP_EOL;"
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)

但是,如果有一个命令选项,我想让它更简单。

是否有任何命令选项或者我是否必须为变通方法创建别名?

gro*_*i08 5

数组赋值有效:

sha=($(shasum -a 256 archive.tar.gz))
echo $sha
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)

或者你可以使用 cut:

shasum -a 256 archive.tar.gz | cut -f1 -d' '
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)

  • 或 `sed 's/[[:space:]].*$//' < <(shasum -a 256 filename)` 或 `awk '{print $1}' < <(shasum -a 256 filename)` 或参数扩展`v=$(shasum -a 256 文件名); echo ${v/[[:space:]]*/}` (3认同)