pack, pcat, unpack - compress and expand files
pack [-f/] [-] file...
pcat file...
unpack [-/] file...
The pack command attempts to store the specified files in a compressed
form. Wherever possible (and useful), each input file file is replaced
by a packed file file.z with the same access modes, access and
modified dates, and owner as those of file. If pack is
successful, file is removed.
The amount of compression obtained depends on the size of the
input file and the character frequency distribution. Because a decoding tree
forms the first part of each .z file, it is usually not worthwhile to
pack files smaller than three blocks, unless the character frequency
distribution is very skewed, which can occur with printer plots or
pictures.
Typically, text files are reduced to 60-75% of their original
size. Load modules, which use a larger character set and have a more uniform
distribution of characters, show little compression, the packed versions
being about 90% of the original size.
The pack utility returns a value that is the number of
files that it failed to compress. If that number exceeds 255,
255 is returned.
No packing occurs if:
- o
- the file appears to be already packed
- o
- the file name is too long to add the .z suffix
- o
- the file is a directory
- o
- the file cannot be opened
- o
- no disk storage blocks are saved by packing
- o
- a file called file.z already exists
- o
- the .z file cannot be created
- o
- an I/O error occurred during processing.
The last segment of the file name must be short enough to allow
space for the appended .z extension. Directories cannot be
compressed.
The pcat command does for packed files what cat(1) does for
ordinary files, except that pcat cannot be used as a filter. The
specified files are unpacked and written to the standard output.
pcat returns the number of files it was unable to unpack.
Failure can occur if:
- o
- the file cannot be opened;
- o
- the file does not appear to be the output of pack.
The unpack command expands files created by pack. For each
file specified in the command, a search is made for a file called
file.z (or just file, if file ends in .z).
If this file appears to be a packed file, it is replaced by its expanded
version. The new file has the .z suffix stripped from its name, and has
the same access modes, access and modification dates, and owner as those of
the packed file.
unpack returns a value that is the number of files it was
unable to unpack. Failure can occur for the same reasons that it can in
pcat, as well as for the following:
- o
- a file with the unpacked name already exists;
- o
- the unpacked file cannot be created.
The following options are supported by pack:
-f
Forces packing of file. This is useful for causing
an entire directory to be packed even if some of the files do not benefit.
Packed files can be restored to their original form using unpack or
pcat.
The following options are supported by pack and
unpack:
-/
When packing or unpacking, copies any ACL and extended
system attributes associated with the source file to the target file. If an
ACL or extended system attributes cannot be copied, the original file is
retained, a diagnostic message is written to stderr, and the final exit
status is non-zero.
The following operands are supported:
file
A path name of a file to be packed, unpacked, or pcated;
file can include or omit the .z suffix.
−
pack uses Huffman (minimum redundancy) codes on a
byte-by-byte basis. If the − argument is used, an internal flag
is set that causes the number of times each byte is used, its relative
frequency, and the code for the byte to be printed on the standard output.
Additional occurrences of − in place of file causes the
internal flag to be set and reset.
See largefile(5) for the description of the behavior of pack,
pcat, and unpack when encountering files greater than or equal
to 2 Gbyte (2^31 bytes).
Example 1 Viewing a Packed File
To view a packed file named file.z use:
example% pcat file.z
or just:
example% pcat file
Example 2 Making an Unpacked Copy:
To make an unpacked copy, say nnn, of a packed file named
file.z (without destroying file.z) use the command:
example% pcat file >nnn
See environ(5) for descriptions of the following environment variables
that affect the execution of pack, pcat, and unpack:
LC_CTYPE, LC_MESSAGES, and NLSPATH.
The following exit values are returned:
0
Successful completion.
>0
An error occurred. The number of files the command failed
to pack/unpack is returned. If the number of failures exceeds 255, then
255 is returned.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE
TYPE |
ATTRIBUTE VALUE |
CSI |
Enabled |
cat(1), compress(1), zcat(1), fgetattr(3C),
fsetattr(3C), attributes(5), environ(5),
largefile(5)