MacOS 中没有 sha256sum

Rui*_*iro 41 osx software-installation hashsum macports

我尝试sha256sum在 High Sierra 中使用;我试图用 安装它MacPorts,如:

sudo port install sha256sum
Run Code Online (Sandbox Code Playgroud)

这没用。

该怎么办?

小智 73

CoreUtils 包也作为 Brew 公式发布。因此,如果您安装了 Brew,您也可以运行:

brew install coreutils
Run Code Online (Sandbox Code Playgroud)

然后添加PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"~/.bashrc,运行source ~/.bashrc,你就完成了。

  • 这应该是公认的答案! (4认同)
  • @Milkncokiez如果有人设法说服我为什么macports问题应该有一个brew解决方案作为正确答案,我洗耳恭听。 (3认同)

Rui*_*iro 24

经过一番调查,我在GitHub sha256sum command is missing in GitHub sha256sum command is missing in an无关软件中发现了一张票,有以下几种解决方案:

  • 安装 coreutils

    sudo port install coreutils
    
    Run Code Online (Sandbox Code Playgroud)

    它安装sha256sum/opt/local/libexec/gnubin/sha256sum

  • 作为另一种可能的解决方案,使用openssl

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
Run Code Online (Sandbox Code Playgroud)
  • 另一个,使用shasumMacOS 原生的命令:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Run Code Online (Sandbox Code Playgroud)


Cal*_*ord 12

如果您只需要 CLI 命令,只需

shasum -a 256 <file>
Run Code Online (Sandbox Code Playgroud)

解决了问题。无需安装coreutils

尽管不明显,但在对此问题的评论以及 Rui F Ribeiro 的回答中都提到了这一点。


Jon*_*mar 6

Mig82 的补充答案,其答案处理 coreutils 中所有可执行文件的 g 前缀。我提供了一个范围严格的解决方案。

coreutils 安装后

brew install coreutils
Run Code Online (Sandbox Code Playgroud)

ls /usr/local/bin/gsha* 将列出以 g 为前缀的可执行文件:

  • /usr/local/bin/gsha1sum
  • /usr/local/bin/gsha224sum
  • /usr/local/bin/gsha256sum
  • /usr/local/bin/gsha384sum
  • /usr/local/bin/gsha512sum

解决方案是使用非前缀名称创建指向您想要的符号链接(处理所有符号链接可能会破坏某些依赖 BSD 可执行文件的程序)

例子

shaarray=(\
/usr/local/bin/gsha1sum
/usr/local/bin/gsha224sum
/usr/local/bin/gsha256sum
/usr/local/bin/gsha384sum
/usr/local/bin/gsha512sum
)
function installsha() {
  for i in "${shaarray[@]}"
  do
    printf "$i\n" | perl -pe 'printf $_; s/gsha/sha/' | xargs -n 2 ln -s
  done
}
Run Code Online (Sandbox Code Playgroud)