目录
[计算校验和 - 传统输出格式](#计算校验和 - 传统输出格式)
[默认输出 - 基础POSIX标准32位CRC校验和](#默认输出 - 基础POSIX标准32位CRC校验和)
内容来源:
GUN : Coreutils - GNU core utilities
busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客
【GUN】【cksum】指令介绍
bash
cksum 打印并验证文件校验和
默认情况下,cksum 为每个给定的文件计算32位循环冗余校验(CRC)校验和,如果没有给出标准输入,则为'-'文件计算标准输入。
cksum 还支持 -a/--algorithm 选项来选择要使用的摘要算法。
这些摘要的首选接口是 cksum, 它包含其他独立的校验和工具,可以使用cksum -a md5 --untagged "$@"等进行模拟。
简介:
cksum [option]... [file]...
通过比较接收文件的 cksum 输出与原始文件的 cksum 输出(通常在分发版中给出),通常使用 cksum 来确保文件没有被破坏。
6.3.1 cksum输出方式
传统输出格式
默认情况下,cksum 打印每个文件的POSIX标准CRC校验和以及文件中的字节数和文件名,除非没有给出参数。
使用的32位CRC是基于 SO/IEC 8802-3:1996 标准(以太网)中用于CRC错误检查的多项式。
类似的输出格式用于其他可选择的 --algorithm=sysv 或 --algorithm=bsd 的遗留校验和,详情见6.2节[sum调用]。
标记输出格式
当 --algorithm 选项选择非传统校验和时,cksum命令默认输出如下表单:
digest_name (file name) = digest
独立校验和工具可以使用--tag选项来选择这种输出模式。
无标签的输出格式
如果使用 --untagged 选项和 --algorithm 选项选择非遗留校验和,则使用以下输出格式。这是独立校验和工具的默认输出格式。
对于每个文件,我们打印校验和、空格、表示二进制或文本输入模式的标志以及文件名。
二进制模式用'*'表示,文本模式用' '(空格)表示。
在重要的系统上,二进制模式是默认的,否则文本模式是默认的。
没有 --zero,并且使用非遗留输出格式,如果文件包含反斜杠、换行或回车,则该行以反斜杠开始,并且文件名中每个有问题的字符都用反斜杠进行转义,这样即使在存在任意文件名时,输出也不会有歧义。
由于反斜杠字符本身是转义的,任何其他的反斜杠转义序列都保留为将来使用。
6.3.2 cksum通用选项
'-a'
'--algorithm'
使用指定的摘要算法计算校验和。
支持的传统校验和(不支持 --check):
'sysv' 等价于sum -s
'bsd' 等价于sum -r
'crc' 等价于cksum(默认值)
支持的更现代的摘要算法有:
'md5' 等价于md5sum
'sha1' 等价于sha1sum
'sha224' 等价于sha224sum
'sha256' 等价于sha256sum
'sha384' 等价于sha384sum
'sha512' 等价于sha512sum
'blake2b' 等价于b2sum
'sm3' 只能通过cksum使用
'--base64'
打印base64编码的摘要,而不是十六进制。这个选项会被 --check忽略。格式符合 RFC 4648#4 (https://datatracker.ietf.org/doc/html/rfc4648#section-4).
每个base64编码的摘要有0、1或2个尾部填充('=')字节。
填充的长度是对3取模的校验和位长,而--check解析器需要与输出完全相同的输入摘要字符串。例如,删除或添加任何`=`填充会导致摘要不匹配。
'--debug'
向stderr输出额外的信息,比如校验和的实现。
'-l'
'--length'
更改(缩短)默认摘要长度。该值以bit为单位指定,因此必须是8的倍数。当指定--check时,此选项将被忽略,因为在检查时自动确定长度。
'--raw'
只打印单个输入未编码的原始二进制摘要。不要输出文件名或其他任何东西。适用时使用网络字节序(大端序):`bsd`、`crc`和`sysv`。
此选项仅适用于单个输入。与其他输出格式不同,cksum不提供检查原始校验和的方法。
'--untagged'
输出使用原始的 Coreutils 格式,其他独立的校验和工具使用这种格式,例如md5sum。
这种格式将校验和放在一行的开头,可能更适合其他实用程序进行进一步处理,特别是与 --zero选项结合使用时。
这并不能确定用于校验和的摘要算法。有关此格式的详细信息,请参阅第43页第6.3.1节[cksum输出模式]。
6.3.3 cksum常用选项
'-b'
'--binary'
cksum命令不支持此选项,因为它只以二进制模式运行。通过以二进制模式读取并输出`*`标志,将每个输入文件视为二进制文件。
这是 --text的逆。在像GNU这样不区分二进制文件和文本文件的系统上,此选项仅将每种输入模式标记为二进制:校验和不受影响。
这个选项是MS-DOS等区分二进制文件和文本文件的系统的默认选项,当标准输入是终端时,读取标准输入除外。
'-c'
'--check'
从每个文件(如果没有指定文件,则从标准输入)读取文件名和校验和信息(不是数据),并报告校验和是否与指定文件的内容匹配。这种模式的输入通常是命令运行之前生成校验和的输出。
支持三种输入格式。
要么是上面描述的默认输出格式------tag输出格式,
要么是类似于默认模式的BSD反向模式格式,
但不使用字符来区分二进制和文本模式。
对于cksum命令,当以 --tag格式输出校验和信息时,--check选项支持自动检测要使用的摘要算法。同样对于cksum命令,--check选项自动检测摘要编码,既接受标准的十六进制校验和,也接受通过cksum的------base64选项生成的校验和。
--check不支持启用--zero的输出。
对于每一行,cksum 读取指定文件并计算其校验和。然后,如果计算出的消息摘要与文件名所在行的消息摘要不匹配,则将该文件标记为未通过测试。否则,文件通过测试。
默认情况下,对于每一个有效的行,都会向标准输出写入一行,以表明指定的文件是否通过了测试。
在所有检查完成后,如果有任何失败,则对标准错误发出警告。使用--status选项来禁止该输出。
如果列出的任何文件无法打开或读取,如果任何有效行与相关文件的校验和不一致,或者没有找到有效行,则 cksum 以非零状态退出。否则,退出成功。
cksum命令不支持使用旧的`sysv`、`bsd`或`crc`算法进行检查。
'--ignore-missing'
此选项仅在验证校验和时有用。在验证校验和时,不要失败或报告任何丢失文件的状态。当给定一个较大的校验和列表来验证下载文件的子集时,这很有用。
'--quiet'
此选项只在校验校验和时有用。在验证校验和时,不要为每个成功检查的文件生成`OK`消息。验证失败的文件以默认的每行文件格式报告。如果有任何校验和不匹配,则打印一个警告,汇总失败到标准错误。
'--status'
此选项仅在验证校验和时有用。在验证校验和时,不要生成默认的逐行诊断,也不要输出总结任何失败的警告。
打开或读取文件失败仍然会触发对标准错误的个别诊断。如果列出的所有文件都是可读的,并且与相关的校验和一致,则成功退出。否则,以指示失败的状态码退出。
'--tag'
输出BSD风格的校验和,表示使用的校验和算法。作为一个GNU扩展,如果不使用 --zero,带有问题字符的文件名会像上面描述的那样进行转义,使用与其他输出格式相同的转义指示器'\'。
--tag选项意味着二进制模式,如果支持--text模式,则不允许使用--text模式,因为那样会使输出格式不必要地复杂化,而且没有什么好处。
有关此格式的详细信息,请参阅第43页第6.3.1节[cksum输出模式]。cksum命令使用--tag作为默认的输出格式。
'-t'
'--text'
cksum命令不支持此选项。通过以文本模式读取并输出` `标志,将每个输入文件视为文本。这是二进制的倒数。
在像GNU这样不区分二进制文件和文本文件的系统上,这个选项是默认的。在其他系统上,当标准输入是终端时,它是读取标准输入的默认值。如果使用 --tag,则不会默认使用此模式。
'-w'
'--warn'
在验证校验和时,对格式不正确的校验和行发出警告。只有在选中的输入中只有几行有效时,这个选项才有用。
'--strict'
在验证校验和时,如果一个或多个输入行无效,在发出所有警告后退出 nonzero。
'-z'
'--zero'
在每行末尾输出一个零字节(ASCII NUL),而不是换行符。
该选项使其他程序能够解析输出,即使该输出包含嵌入换行符的数据。也不使用文件名转义。
【busybox】【cksum】指令介绍
NA
【linux】【cksum】指令介绍
bash
用法:cksum [文件]...
或:cksum [选项]
输出每个文件的 CRC 校验值和字节统计。
--help 显示此帮助信息并退出
--version 显示版本信息并退出
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 cksum 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/cksum>
或者在本地使用:info '(coreutils) cksum invocation'
使用示例:
计算校验和 - 传统输出格式
输出的格式:POSIX标准CRC校验和 文件中的字节数 文件名
指令:cksum test*
默认输出 - 基础POSIX标准32位CRC校验和
NA
其他校验指令对参数有更好的支持,请看其他校验指令
NA
常用组合指令:
NA