在 git-bash(MinGW)上安装 sha1sum

在 git-bash(MinGW)上安装 sha1sum

我在 Windows 7 上用过git-bash很多次。我了解到它是 MinGW 的包装器。它有md5sum但不是sha1sum。我想安装sha1sum,但我不知道如何安装。

当我尝试时mingw-get,它说“未找到命令”

当我尝试mingw-getSourceForge,我只找到了整个 MinGW 程序的安装程序,但没有找到mingw-get

如何安装 gettingsha1sum或 getting mingw-get

答案1

mingw-get可从以下网址获取

sourceforge.net/projects/mingw/files/Installer/mingw-get

安装完成后运行

mingw-get install msys-coreutils

答案2

我自己解决了这个问题,通过添加一个使用包含的 openssl 的 shell 函数来替换我最常用的 sha1sum 部分。

function openssl_sha1sum() {
    local i nf=0 binary= text=true
    local -a files

    # parse for -b/-t mode output arguments
    for (( i=1; i <= $#; i++ )); do
        case "${!i}" in
            (-t|--text)
                text=true
                binary=
                ;;
            (-b|--binary)
                binary=true
                text=
                ;;
            (-|-[cw]|--help|--version|--status|--check|--warn)
                ;;
            (*)
                let 'nf++'
                files[$nf]="${!i}"
                ;;
        esac
    done

    # execute the appropriate command and reformat the output
    if [ $nf -eq 0 ]; then
        local binfmt='s/$/ *-/;' txtfmt='s/$/  -/;'
        if [ -n "$binary" ]; then
            fmt=$binfmt
        else
            fmt=$txtfmt
        fi
        openssl dgst -sha1 -hex | sed -e "$fmt"
    else
        local commonfmt='s/^[A-Z0-9]\+(\(.*\))= \([0-9a-fA-F]\+\)$/\2'
        local binfmt="$commonfmt "'*\1/;' txtfmt="$commonfmt  "'\1/;'
        if [ -n "$binary" ]; then
            fmt=$binfmt
        else
            fmt=$txtfmt
        fi
        openssl dgst -sha1 -hex "${files[@]}" | sed -e "$fmt"
    fi
}

if ! type -p sha1sum &>/dev/null; then
    function sha1sum() { openssl_sha1sum "$@"; }
fi

相关内容