pack [-f/] [-] file...
pcat file...
unpack [-/] file...
pack 命令会尝试以压缩格式存储指定文件。如果可能(并且有用),每个输入文件 file 都会替换为打包文件 file.z,而且后者与 file 拥有相同的访问模式、访问和修改日期以及所有者。如果 pack 成功,则会删除 file。
压缩程度取决于输入文件的大小和字频分布。因为每个 .z 文件的第一部分由解码树构成,所以通常不值得打包小于三个块的文件,除非字频分布非常倾斜,而这种情况会出现在打印绘图或图片上。
通常,文本文件的大小会降至原始大小的 60-75%。装入模块由于使用了更大的字符集并且具有更加一致的字符分布,因此压缩程度较小,其打包后的大小约为原始大小的 90%。
pack 实用程序会返回一个值,即压缩失败的文件的数量。如果文件数量超过 255,则返回 255。
如果出现以下情况,则不进行打包:
文件看起来已经过打包
文加名太长,无法添加 .z 后缀
文件有链接
文件是一个目录
文件无法打开
文件为空
打包时未保存任何磁盘存储块
名为 file.z 的文件已存在
无法创建 .z 文件
处理过程中发生 I/O 错误。
文件名的最后部分必须足够短,以便为附加的 .z 扩展名留出空间。目录无法压缩。
pcat 命令对打包文件执行的操作即为 cat(1) 对原始文件执行的操作,但 pcat 不能用作过滤器。对指定文件进行解压缩并写入标准输出。
pcat 会返回无法解压缩的文件的数量。出现以下情况时会发生故障:
文件无法打开;
文件看起来不是 pack 的输出。
unpack 命令用于解压缩 pack 所创建的文件。对于在此命令中指定的每个 file,系统会对称作 file.z(或者只是 file,如果 file 以 .z 结尾)的文件执行搜索。如果此文件看上去是打包文件,则替换为它的解压缩版本。新文件会删除其名称中的 .z 后缀,并且与打包文件有着相同的访问模式、访问和修改日期以及所有者。
unpack 会返回一个值,即无法解压缩的文件的数量。除了与 pcat 中相同的故障原因外,它还会在以下情况下发生故障:
具有解压缩名称的文件已存在;
无法创建解压缩文件。
pack 支持以下选项:
强制对 file 进行打包。这有助于打包整个目录,即使有些文件不会从中受益。使用 unpack 或 pcat 可以将打包文件恢复到原始格式。
pack 和 unpack 支持以下选项:
打包或解压缩时,将任何与源文件相关的 ACL 和扩展系统属性都复制到目标文件。如果无法复制 ACL 或扩展系统属性,则保留原始文件,向 stderr 写入一条诊断消息,且最终退出状态为非零值。
支持下列操作数:
要打包、解压缩或执行 pcat 命令的文件的路径名;file 可以包含或忽略 .z 后缀。
pack 会逐字节使用霍夫曼(最小冗余)编码。如果使用 − 参数,则会设置一个内部标志,使每个字节的使用次数、相对频率和字节代码输出到标准输出中。使用更多 − 替换 file 会使得系统设置和重置内部标志。
有关 pack、pcat 和 unpack 遇到大于或等于 2 GB (231 字节)文件时行为的说明,请参见 largefile(5)。
要查看名为 file.z 的打包文件,请使用:
example% pcat file.z
或仅使用:
example% pcat file
示例 2 制作解压缩副本:要制作名为 file.z 的打包文件的解压缩副本,例如 nnn(同时不损坏 file.z),请使用命令:
example% pcat file >nnn
有关影响 pack、pcat 和 unpack 执行的 LC_CTYPE、LC_MESSAGES 和 NLSPATH 环境变量的描述,请参见 environ(5)。
将返回以下退出值:
成功完成。
出现错误。返回命令未能打包/解压缩的文件的数量。如果失败数量超过 255,则返回 255。
有关下列属性的说明,请参见 attributes(5):
|
cat(1)、compress(1)、zcat(1)、fgetattr(3C)、fsetattr(3C)attributes(5)、environ(5)、largefile(5)