Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
COMPRESS(1)		FreeBSD	General	Commands Manual		   COMPRESS(1)

     compress, uncompress -- compress and expand data

     compress [-cfv] [-b bits] [file ...]
     uncompress	[-cfv] [file ...]

     The compress utility reduces the size of the named	files using adaptive
     Lempel-Ziv	coding.	 Each file is renamed to the same name plus the	exten-
     sion ``.Z''.  As many of the modification time, access time, file flags,
     file mode,	user ID, and group ID as allowed by permissions	are retained
     in	the new	file.  If compression would not	reduce the size	of a file, the
     file is ignored.

     The uncompress utility restores the compressed files to their original
     form, renaming the	files by deleting the ``.Z'' extension.

     If	renaming the files would cause files to	be overwritten and the stan-
     dard input	device is a terminal, the user is prompted (on the standard
     error output) for confirmation.  If prompting is not possible or confir-
     mation is not received, the files are not overwritten.

     If	no files are specified or a file argument is a single dash (`-'), the
     standard input is compressed or uncompressed to the standard output.  If
     either the	input and output files are not regular files, the checks for
     reduction in size and file	overwriting are	not performed, the input file
     is	not removed, and the attributes	of the input file are not retained.

     The options are as	follows:

     -b	     Specify the bits code limit (see below).

     -c	     Compressed	or uncompressed	output is written to the standard out-
	     put.  No files are	modified.

     -f	     Force compression of file,	even if	it is not actually reduced in
	     size.  Additionally, files	are overwritten	without	prompting for

     -v	     Print the percentage reduction of each file.

     The compress utility uses a modified Lempel-Ziv algorithm.	 Common	sub-
     strings in	the file are first replaced by 9-bit codes 257 and up.	When
     code 512 is reached, the algorithm	switches to 10-bit codes and continues
     to	use more bits until the	limit specified	by the -b flag is reached (the
     default is	16).  Bits must	be between 9 and 16.

     After the bits limit is reached, compress periodically checks the com-
     pression ratio.  If it is increasing, compress continues to use the
     existing code dictionary.	However, if the	compression ratio decreases,
     compress discards the table of substrings and rebuilds it from scratch.
     This allows the algorithm to adapt	to the next "block" of the file.

     The -b flag is omitted for	uncompress since the bits parameter specified
     during compression	is encoded within the output, along with a magic num-
     ber to ensure that	neither	decompression of random	data nor recompression
     of	compressed data	is attempted.

     The amount	of compression obtained	depends	on the size of the input, the
     number of bits per	code, and the distribution of common substrings.  Typ-
     ically, text such as source code or English is reduced by 50-60%.	Com-
     pression is generally much	better than that achieved by Huffman coding
     (as used in the historical	command	pack), or adaptive Huffman coding (as
     used in the historical command compact), and takes	less time to compute.

     The compress and uncompress utilities exit	0 on success, and >0 if	an
     error occurs.

     The compress utility exits	2 if attempting	to compress the	file would not
     reduce its	size and the -f	option was not specified.

     gunzip(1),	gzexe(1), gzip(1), zcat(1), zmore(1), znew(1)

     Welch, Terry A., "A Technique for High Performance	Data Compression",
     IEEE Computer, 17:6, pp. 8-19, June, 1984.

     The compress and uncompress utilities conform to IEEE Std 1003.1-2001

     The compress command appeared in 4.3BSD.

FreeBSD	11.0			 May 17, 2002			  FreeBSD 11.0


Want to link to this manual page? Use this URL:

home | help