linux cksum 命令用于计算文件的校验和,它会生成一个由数字组成的校验和值,该值可用于验证文件的完整性和检测文件是否被篡改。同时,cksum 命令还会输出文件的字节数和文件名,使用户可以确认校验和匹配的文件是否是所需的文件。该命令在文件传输和备份时很有用,可以文件在传输和存储过程中没有损坏或修改过。
命令名称
cksum
命令功能
计算并显示文件的 CRC 校验和
命令全称
Checksum
命令语法
cksum [选项]... [文件]...
cksum [OPTION]... [FILE]... #[English]
命令参数
-c #校验文件的校验和是否与指定的校验和相同
--help #显示帮助文档
--version #显示版本信息
命令原理
Linux cksum命令通过计算文件中每个字节的校验和来生成一个32位数字。校验和可以用于检测文件是否被修改或损坏,通过比较生成的数字可以判断两个文件是否完全相同。该命令使用CRC(循环冗余校验)算法来计算校验和,算法通过对每个字节进行异或和移位操作,累加得到结果。
用法举例
#计算文件 file.txt 的校验和并输出结果。
cksum file.txt
#计算当前目录下所有以 .txt 结尾的文件的校验和并输出结果。
cksum *.txt
#以二进制模式计算文件 file.txt 的校验和并输出结果。
cksum -b file.txt
#使用管道将字符串 "Hello World" 传递给 cksum 命令,计算其校验和并输出结果。
echo "Hello World" | cksum
#计算文件 file.txt 的校验和并输出结果,同时显示文件的更新时间。
cksum -u file.txt
#读取文件 checksums.txt 中的校验和,检查对应文件是否被篡改过。
cksum -c checksums.txt
#在当前目录下递归查找所有文件,计算它们的校验和并输出到文件 checksums.txt 中。
find . -type f -exec cksum {} \; > checksums.txt
#使用第二个算法计算文件 file.txt 的校验和并输出结果。
cksum -o 2 file.txt
#显示 cksum 命令的帮助信息。
cksum -h
#计算文件 file.txt 的校验和并输出结果,同时显示文件名和大小。
cksum -t file.txt
执行权限
所有用户都可以执行
系统路径
/usr/bin/cksum
注意事项
如果不指定文件参数,则从标准输入读取数据。
系统自带
是
常用命令
否
命令分类
文件处理
参数详解
-c
执行校验操作
#校验文件file.txt的完整性,并输出校验结果。
cksum -c file.txt
-o 1
设置校验和输出格式
#以16进制形式输出file.txt的校验和。
cksum -o 1 file.txt
-s 1024
指定输入文件的数据起始偏移
#从文件file.txt的偏移量1024处开始计算校验和。
cksum -s 1024 file.txt
-b
以二进制形式输出校验和
#以二进制形式输出file.txt的校验和。
cksum -b file.txt
--help
显示帮助文档
#显示cksum命令的帮助文档。
cksum --help
b或--binary
该参数用于指定计算二进制文件的校验和。
#计算二进制文件test.bin的校验和并输出结果。
假设当前目录下有一个名为test.bin的二进制文件,可使用命令:cksum -b test.bin
C或--traditional
该参数用于指定使用传统的校验和算法(类似于UNIX早期版本所使用的算法)。
#使用传统算法计算文件test.txt的校验和并输出结果。
假设当前目录下有一个名为test.txt的文件,可使用命令:cksum -C test.txt
p或--portable
该参数用于指定计算可移植格式的校验和,输出格式与BSD cksum命令相同,可在不同系统之间进行比较。
#计算文件test.txt的可移植格式校验和并输出结果,输出格式与BSD cksum命令相同。
假设当前目录下有一个名为test.txt的文件,可使用命令:cksum -p test.txt
t或--text
该参数用于指定计算文本文件的校验和。
#计算文本文件test.txt的校验和并输出结果。
假设当前目录下有一个名为test.txt的文本文件,可使用命令:cksum -t test.txt
-b, --binary
以二进制格式计算校验和,而不是默认的16位CRC校验和。
#该命令将以二进制格式计算file.txt文件的校验和。
cksum -b file.txt
-u, --traditional
计算传统的32位CRC校验和。
#该命令将以传统的32位CRC格式计算file.txt文件的校验和。
cksum -u file.txt
-t, --text
以文本格式计算校验和。
#该命令将以文本格式计算file.txt文件的校验和。
cksum -t file.txt
-p, --portable
生成处理器架构无关的校验和。
#该命令将生成一个处理器架构无关的校验和,可以在不同的系统之间进行比较。
cksum -p file.txt
-s, --string
计算字符串的校验和。
#该命令将计算字符串"hello"的校验和。使用管道可以将字符串作为输入。
echo "hello" | cksum -s
命令报错原因
* 权限不足,无法访问文件;
* 文件路径或文件名错误;
* 文件不存在,或者文件为空;
* 文件格式不正确;
* 文件过大,出范围;
* 磁盘空间不足;
* 其他未知原因;