【busybox记录】【shell指令】cksum

目录

内容来源:

【GUN】【cksum】指令介绍

【busybox】【cksum】指令介绍

【linux】【cksum】指令介绍

使用示例:

[计算校验和 - 传统输出格式](#计算校验和 - 传统输出格式)

[默认输出 - 基础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

指令不常用/组合用法还需继续挖掘:

相关推荐
tlog1 分钟前
【vim】vim怎么把某一列内容复制到另一列
linux·编辑器·vim
ID_14 HuFei4 分钟前
MHA高可用
linux
BIO系统33 分钟前
ASUS/华硕灵耀14 UX3402ZA 原厂win11系统 工厂文件 带ASUS Recovery恢复
运维·5g·电脑·个人开发
✿ ༺ ོIT技术༻35 分钟前
Linux:进程间通信之进程池和日志
linux·运维·服务器
慧都小妮子42 分钟前
质量留住用户:如何通过测试自动化提供更高质量的用户体验
运维·软件测试·自动化·ux
Holen&&Beer1 小时前
【Linux】安装cuda
linux·运维·服务器
是阿建吖!1 小时前
【Linux】进程优先级
linux·运维·服务器
朝九晚五ฺ1 小时前
【Linux探索学习】第十六弹——进程地址空间:深入解析操作系统中的进程地址空间
linux·运维·学习
做人不要太理性2 小时前
Linux常用指令(1)
linux·运维·服务器
很楠不爱3 小时前
Linux网络——NAT/代理服务器
linux·网络·智能路由器