在Linux系统中,ck
命令并非一个广泛使用的标准命令,它通常指的是cksum
命令的简写,cksum
是用于计算文件校验和的工具,主要用于验证文件的完整性和一致性。cksum
命令通过CRC(循环冗余校验)算法和字节计数生成校验和,常用于文件传输后的完整性校验,以下将详细介绍cksum
命令的功能、用法、参数及实际应用场景。

cksum
命令的基本功能
cksum
命令的主要功能是计算输入文件或标准输入的CRC校验和和字节总数,CRC是一种基于多项式除法的错误检测码,能够有效检测数据在传输或存储过程中出现的错误。cksum
命令的输出格式为:校验和 字节数 文件名
,如果未指定文件名,则从标准输入读取数据,且不显示文件名。
基本语法
cksum
命令的基本语法如下:
cksum [选项] [文件...]
如果不指定文件,cksum
会从标准输入读取数据,适用于管道操作。
echo "hello" | cksum
输出结果为:3297631864 6
,其中3297631864
是CRC校验和,6
是字节数(包括换行符)。

常用选项及说明
以下是cksum
命令的常用选项及其功能:
选项 | 功能描述 |
---|---|
-a |
使用所有算法(包括BSD的sum 算法),默认仅使用CRC算法 |
--algorithm=NAME |
指定算法,可选crc (默认)、bsd 、sysv 等 |
-c |
校验文件中的校验和和字节数是否匹配,通常配合(标准输入)使用 |
--tag |
输出格式包含算法名称,例如CRC 3297631864 6 |
--status |
与-c 配合使用,仅返回状态码(0表示匹配,1表示不匹配),不输出详细信息 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
实际应用场景
-
文件完整性校验
在文件传输后,可以通过cksum
生成校验和,接收方再次计算校验和进行比对,确保文件未被篡改或损坏。# 发送方计算校验和 cksum file.txt > checksum.txt # 接收方校验 cksum -c checksum.txt
如果文件内容一致,输出为:
file.txt: OK
;否则显示FAILED
。 -
批量校验多个文件
使用-c
选项可以校验多个文件的校验和,校验和文件需包含校验和 字节数 文件名
格式的数据。(图片来源网络,侵删)# 生成校验和文件 cksum file1.txt file2.txt > checksums.txt # 校验所有文件 cksum -c checksums.txt
-
管道操作
cksum
可以处理标准输入的数据,适合在管道中与其他命令结合使用。# 计算压缩文件的校验和 gzip -c file.txt | cksum
-
算法选择
默认情况下,cksum
使用CRC算法,但可以通过--algorithm
选择其他算法。# 使用BSD算法 cksum --algorithm=bsd file.txt
高级用法
-
与
find
命令结合批量校验
可以通过find
命令查找特定类型的文件并生成校验和:find /path -type f -exec cksum {} \; > all_checksums.txt
-
校验和文件的格式要求
校验和文件需符合以下格式:校验和 字节数 文件名
3297631864 6 file.txt 123456789 10 file2.txt
使用
-c
校验时,文件名需与实际路径一致,否则会提示FAILED
。 -
隐藏输出状态码
在脚本中,若仅需状态码而不输出详细信息,可使用--status
:cksum -c --status checksums.txt
通过检查变量判断校验结果(0为成功,1为失败)。
注意事项
-
算法兼容性
不同算法生成的校验和不同,校验时需确保算法一致,BSD算法和CRC算法的校验和结果完全不同。 -
文件路径问题
使用-c
校验时,校验和文件中的文件名需与实际文件路径匹配,否则会校验失败,可以使用绝对路径或相对路径。 -
大文件处理
cksum
支持大文件,但计算大文件的校验和可能需要较长时间,尤其是在低性能设备上。
相关问答FAQs
问题1:cksum
和md5sum
、sha256sum
有什么区别?
解答:cksum
使用CRC算法生成校验和,主要用于检测随机错误(如传输损坏),但抗篡改能力较弱;而md5sum
和sha256sum
分别使用MD5和SHA-256算法,生成固定长度的哈希值,常用于密码学和文件完整性校验(如防止篡改),CRC算法速度较快但安全性较低,适合快速校验;MD5和SHA-256安全性高但计算较慢。
问题2:如何校验一个目录下所有文件的完整性?
解答:可以通过find
命令结合cksum
生成所有文件的校验和,然后使用-c
校验。
# 生成校验和文件 find /path/to/directory -type f -exec cksum {} \; > dir_checksums.txt # 校验所有文件 cksum -c dir_checksums.txt
若需递归校验子目录,确保find
命令包含-type f
即可,校验时需确保目录结构未变化,否则文件路径不匹配会导致校验失败。