Unix/命令/文件分析指南
file 显示文件类型。 要获得 mimetype,请使用 -i 选项。
示例
$ file Unix.txt Unix.txt: ASCII text
$ file -i Unix.txt Unix.txt: text/plain; charset=us-ascii
链接
wc 告诉你文件中的行数、单词数和字符数。
示例
$ wc hello.txt 2 6 29 hello.txt
$ wc -l hello.txt 2 hello.txt
$ wc -w hello.txt 6 hello.txt
$ wc -c hello.txt 29 hello.txt
链接
输出文件、文件或标准输入的 32 位循环冗余校验 (CRC) 校验和的特定变体,以及大小;在最新的 GNU Coreutils 和一些其他实现中,它可以通过 -a 选项输出其他校验和。这种 32 位 CRC 的变体不同于 zip、PNG 和 zlib 使用的 CRC-32;一方面,cksum 不仅根据文件或输入的八位字节流计算 CRC,而是根据追加了流长度的流计算 CRC。
cksum 输出的 CRC 可用于防止对文件进行意外修改:如果校验和没有改变,则文件很可能没有损坏。默认的 CRC 校验和不是加密的:它只防范非恶意(有意)的修改。
最新的 GNU Coreutils cksum 允许通过 -a 选项从多种不同的校验和类型中进行选择,包括加密校验和。其中包括 sysv、bsd、crc、md5、sha1、sha224、sha256、sha384、sha512、blake2b 和 sm3。这些校验和都不属于 zip、PNG 和 zlib 的 CRC-32。OpenBSD cksum 也提供 -a 选项,而算法列表略有不同。FreeBSD cksum 允许通过 -o1、-o2 和 -o3 选项选择三种校验和算法之一,除了默认算法之外;-o3 是 zip、PNG 和 zlib 的 CRC-32;这也适用于 macOS。
示例
$ cksum /etc/passwd 3052342160 2119 /etc/passwd
一些“cksum”实现提供其他算法,例如“md5”和“sha1”
$ cksum -a sha1 /etc/passwd SHA1 (/etc/passwd) = 816d937ca4cdb4dee92d5002610fae63b639d224
你可以通过标准输入将字符串提供给“cksum”来测试它
$ printf 'Guide to UNIX'|cksum 2195826759 13
链接
- cksum, opengroup.org
- sum 手册页, man.cat-v.org
- cksum, freebsd.org
- 6.3 cksum 在 GNU Coreutils 手册中,gnu.org
- cksum, openbsd.org
- cksum, wikipedia.org
- 参数化 CRC 算法目录, reveng.sourceforge.io
- cksum.c 在 coreutils 中,github.com
- cksum 文件夹 在 file_cmds-188 中,opensource.apple.com
一个遗留工具,输出文件、文件或标准输入的某种校验和,以及大小。它没有被 POSIX 覆盖;POSIX 将 #cksum 作为替代工具进行了规范,使用的是与遗留 sum 使用的校验和不同的校验和类型。遗留 sum 的不同变体使用不同的算法。FreeBSD cksum 通过 -o1 和 -o2 选项,以及最新的 GNU Coreutils cksum 通过 -a 选项提供遗留 sum 使用的变体算法。
GNU Coreutils sum 允许通过 -r 和 -s 选项选择遗留算法。
两种常用的遗留算法如下所示。
BSD sum,在 GNU sum 中为 -r
- 将校验和初始化为 0
- 对于输入流的每个字节
- 对校验和执行 1 位的 16 位按位右循环移位
- 将字节添加到校验和,并将结果应用于模 2 ^ 16,从而将其保持在 16 位之内
- 结果是一个 16 位校验和
System V sum,在 GNU sum 中为 -s
- checksum0 = 输入流中所有字节的总和模 2 ^ 32
- checksum1 = checksum0 模 2 ^ 16 + checksum0 / 2 ^ 16;
- checksum = checksum1 模 2 ^ 16 + checksum1 / 2 ^ 16;
- 结果是一个 16 位校验和,由最初的 32 位普通字节总和计算得出
链接
- cksum, opengroup.org
- sum 手册页, man.cat-v.org
- cksum, freebsd.org
- 6.2 sum 在 GNU Coreutils 手册中,gnu.org
- sum (Unix), wikipedia.org
- sum.c 在 coreutils 中,github.com
- sum1.c 在 freebsd-src 中,github.com
- sum2.c 在 freebsd-src 中,github.com
- sum.c 在第七版 Unix 中,tuhs.org
输出文件或文件系统状态,包括大小、访问权限、创建和修改时间等。该命令似乎在 POSIX 中不存在;POSIX 只指定了系统调用 stat()。
链接
输出匹配正则表达式、不匹配正则表达式以及类似内容的行,具体取决于选项和使用的正则表达式。 请参见 Grep 维基教科书。
链接
- grep, opengroup.org
- grep 手册页, man.cat-v.org
- grep, freebsd.org
- GNU Grep 3.0, gnu.org
逐行比较两个文件的文件内容,并输出差异。另请参见 diff3。
链接
逐行比较三个文件的原始内容并输出差异。另见 diff。
链接
逐字节比较文件,输出第一个差异所在的字节数和行号(如果有)。如果文件是二进制完全相同的,则不输出任何内容。除非使用 -l 选项,否则不会显示第一个差异之后的进一步差异。
链接
输出文件中找到的可打印字符串,在这些文件是二进制文件时很有用。
链接
- strings,opengroup.org
- strings,freebsd.org
- strings 在 GNU 二进制工具 中,sourceware.org
- W:strings (Unix)