
COMPRESS(1)                                         COMPRESS(1)



NAME

        compress, uncompress, zcat  -  compress and  uncompress
        files

SYNOPSIS

        compress [ -c ] [ -C ] [ -d ] [ -f ] [ -v  ]  [  -b  bits  ]  [
        filename ... ]
        uncompress [ -c ] [ -f ] [ -v ] [ -V ] [ filename ... ]
        zcat [ filename ... ]

DESCRIPTION

        Compresses the specified files or standard input.  Each
        file  is  replaced by a file with the extension .Z, but
        only if the file got smaller.  If no files  are  speci-
        fied,  the compression is applied to the standard input
        and is written to standard  output  regardless  of  the
        results.   Compressed  files  can  be restored to their
        original form by specifying the -d option, or  by  run-
        ning  uncompress  (linked to compress), on the .Z files
        or the standard input.

        If the output file exists, it will not  be  overwritten
        unless  the  -f  flag is given.  If -f is not specified
        and compress is run in  the  foreground,  the  user  is
        prompted as to whether the file should be overwritten.

        If the -f  flag  is  given,  all  files  specified  are
        replaced  with  .Z  files - even if the file didn't get
        smaller.

        When file names are given, the  ownership  (if  run  by
        root),  modes,  accessed  and  modified times are main-
        tained between the file and its .Z  version.   In  this
        respect,  compress  can  be used for archival purposes,
        yet can still be used with make(1) after uncompression.

        The   -c   option   causes   the   results    of    the
        compress/uncompress  operation to be written to stdout;
        no files are changed.  The zcat program is the same  as
        specifying -c to uncompress (all files are unpacked and
        written to stdout).

        Compress  uses  the   modified   Lempel-Ziv   algorithm
        described  in  "A  Technique  for High Performance Data
        Compression", Terry A. Welch, IEEE Computer Vol 17,  No
        6  (June 1984), pp 8-19.  Common substrings 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  bits
        limit  as  specified by the -b flag is reached (default
        16).  Bits must be between 9 and 16.  The  default  can
        be changed in the source to allow compress to be run on
        a smaller machine.



                              -1-


COMPRESS(1)                                         COMPRESS(1)



        After the bits limit is reached, compress  periodically
        checks  the  compression  ratio.   If it is increasing,
        compress continues to use the codes  that  were  previ-
        ously  found  in the file.  However, if the compression
        ratio decreases, compress discards the  table  of  sub-
        strings  and rebuilds it from scratch.  This allows the
        algorithm to adapt to the next  "block"  of  the  file.
        The -C (compatibility) flag prevents subdivision of the
        file into blocks; this produces an output file that old
        versions of compress can read.

        A two byte magic number is prepended  to  the  file  to
        ensure  that  neither  uncompression of random text nor
        recompression of compressed  text  are  attempted.   In
        addition, the bits specified during compress is written
        to the file so that the -b  flag  can  be  omitted  for
        uncompress.

        The amount of compression obtained depends on the  size
        of the input file, the amount of bits per code, and the
        distribution of character substrings.  Typically,  text
        files,  such  as  C  programs,  are  reduced by 50-60%.
        Compression is generally much better than that achieved
        by  Huffman coding (as used in pack), or adaptive Huff-
        man coding (compact), and takes less time to compute.

        If the -v (verbose) flag is given, then after each file
        is  compressed, a message is printed giving the percen-
        tage of the input file that has been saved by  compres-
        sion.

        If the -V (version) flag is given, the  program's  ver-
        sion number is printed.

        The exit status is normally 0; if the  last  file  gets
        bigger  after  compression, the exit status is 2; if an
        error occurs, the exit status is 1.

SEE ALSO

        compact(1), pack(1)

DIAGNOSTICS

        Usage: compress [-cCdfvV] [-b maxbits] [file ...]
                Invalid options were specified on  the  command
                line.
        Missing maxbits
                Maxbits must follow -b.
        Unknown flag: 'x';
                Invalid flags were  specified  on  the  command
                line.
        file: not in compressed format
                The specified file has not been compressed.
        file: compressed with xx bits, can only handle yy bits
                The specified file was compressed by a compress
                program  that  could  handle more bits than the


                              -2-


COMPRESS(1)                                         COMPRESS(1)



                current compress program.  Recompress the  file
                with a smaller bits.
        file: already has .Z suffix -- no change
                Cannot compress a file that has a ".Z"  suffix.
                mv(1)  the  file  to  a  different name and try
                again.
        file: filename too long to tack on .Z
                The specified file cannot be compressed because
                its  filename  is  longer  than  12 characters.
                mv(1) the file to  a  different  name  and  try
                again.   This  message does not occur on 4.2BSD
                systems.
        file already exists; do you wish to overwrite (y or n)?
                Respond "y" if you want the output file  to  be
                replaced; "n" if you want it to be left alone.
        file:
                This message fragment  is  written  during  the
                processing of a file.
        Compression: xx.xx%
                This message fragment gives the  percentage  of
                the  input file that has been saved by compres-
                sion.
        -- not a regular file: unchanged
                This message fragment is written when the input
                file  is not a regular file.  The input file is
                left unchanged.
        -- has xx other links: unchanged
                This message fragment is written when the input
                file   has  links.   The  input  file  is  left
                unchanged.  See ln(1) for more information.
        -- file unchanged
                This message fragment is written when  no  sav-
                ings  are  achieved  by compression.  The input
                file is left unchanged.
        -- replaced with file
                This message fragment is written  when  a  file
                has been sucessfully compressed/uncompressed.






















                              -3-

