我试图通过执行命令cksum
使用Go来获取一个文件的cksum。
获得以下错误:
exec: "cksum": executable file not found in $PATH
以下是代码:
cmd := exec.Command("/bin/cksum",dst)
感谢。
答案 0 :(得分:2)
来自exec.Command
的文档:
如果name不包含路径分隔符,则Command会使用LookPath将路径解析为完整名称(如果可能)。否则它直接使用名称。
因此,使用cmd := exec.Command("cksum", …)
稍微好一点,然后在路径上找到它的位置。
或者,您应该运行which cksum
,几乎每个unix系统都会运行/usr/bin/cksum
。
但更好的是,让您的代码可以移植到可以运行Go并使用hash/crc32
的任何操作系统。
或者甚至更好,如果你可以删除任何必须使用CRC32的要求(这是古代cksum
使用的),
选择其中一个远优于哈希
hash/…
,
crypto/…
(例如sha256),
或golang.org/x/crypto/…
(例如sha3)。
答案 1 :(得分:1)
大多数可执行二进制文件都存在于/ usr / bin下 目录,所以你需要修改你的代码如下。
cmd := exec.Command("/usr/bin/cksum",dst)