compress 命令
用途
压缩数据。
语法
compress [ -c ] [ -C ] [ -d ] [ -F ] [ -f ] [ -n ] [ -q ] [ -v ] [ -V ] [ -b Bits ] [ File ... ]
描述
compress 命令通过使用自适应 Lempel-Ziv 编码来压缩数据,以减少文件大小。 在可能的情况下,由 File 参数指定的每个原始文件都将替换为一个压缩文件,并在其名称后追加一个 .Z 。 如果调用进程具有适当特权,那么压缩文件保留与原始文件相同的所有权、方式和修改时间。 如果指定的文件路径超过 1023 字节,那么该命令不起作用。 如果没有指定文件,标准输入将被压缩到标准输出。 如果压缩没有减少文件大小,将对标准错误写一个消息而不替换原文件。
注: 文件必须具有要替换的正确许可权。
压缩量依赖于输入大小、由 Bits 变量指定的单位编码的位数和公共子串的分布。 典型地,源代码或英文文本将减少 50% 到 60%。 与 Huffman 编码 (如 pack 命令中所使用) 或自适应 Huffman 编码所实现的压缩相比, compress 命令的压缩更紧凑,计算所需时间更少。
标志
| 项 | 描述 |
|---|---|
| -b 位 | 指定用以代替文件中公共子串的位的最大值。 Bits 变量的值必须在从 9 位到 16 位的范围内。 Bits 变量的缺省值是 16 位。 当压缩数据时,算法首先用全部 9 位编码(257 到 512)来替换尽可能多的子串。 然后,它使用所有 10 位代码,依此类推,直到达到 -b 标志指定的限制为止。 |
| -c | 写入标准输出。 没有文件被更改。 |
| -C | 产生与 Berkeley 软件分发 (BSD) R2.0 版本兼容的输出。 |
| -d | 使 compress 命令像 uncompress 命令完全一样工作。 |
| -f 或者 -F | 强制压缩。 -f 和 -F 标志是可互换的。 覆盖 File.Z 文件 (如果它已存在)。 当获得 Bits 变量的值之后,compress 命令定期地检查压缩率。 如果它增加,那么 compress 命令继续使用存在的编码词典。 然而,如果压缩率降低,那么 compress 命令丢弃子串表并重建它。 重建表使得算法能适应文件的下一块。 当 .Z 文件已存在时,如果未指定 -f 标志,并且该进程未在后台运行,那么它将提示您验证是否覆盖现有 .Z 文件。 |
| -n | 从压缩文件省略压缩文件头。 注: 如果使用此选项,那么在使用 uncompress 命令解压缩文件时也必须使用 -n 标志。
|
| -q | 禁止显示由 -v 标志生成的压缩统计信息。 如果同一命令行中有几个 -v 和 -q 标志,那么最后一个指定的标志将控制统计信息的显示。 |
| -v | 写压缩百分比。 |
| -V | 将当前版本和编译选项写入标准错误。 |
参数
| 项 | 描述 |
|---|---|
| 文件 | 指定待压缩文件。 |
返回值
如果发生错误,那么退出状态为 1。 如果 compress 命令在不压缩文件的情况下退出,那么它将以 2 状态退出。 否则, compress 命令将退出,状态为 0。
compress 命令在发生以下任何事件时,检测到错误并以状态 1 退出:
- 输入文件不是常规文件。
- 输入文件名太长,无法附加 .Z 扩展名。
- 无法读取输入文件或无法写入输出文件。
退出状态
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| 第 1 年 | 发生错误。 |
| 2 | 未压缩一个或多个文件,因为它们的大小可能已增加 (并且未指定 -f 标志)。 |
| > 2 | 发生错误。 |
安全性
RBAC 用户和可信 AIX 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限和特权的更多信息,请参阅 安全性中的 "特权命令数据库"。 要获取与此命令相关联的特权和权限的列表,请参阅
lssecattr 命令或 getcmdattr 子命令。
示例
要压缩 foo 文件并将压缩百分比写入标准错误,请输入以下命令:
compress -v foo
foo 文件被压缩并重命名为 foo.Z。