\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename gzip.info
@settitle Gzip User's Manual
@finalout
@setchapternewpage odd
@c %**end of header

@ifinfo
This file documents the the GNU @code{gzip} command for compressing files.

Copyright (C) 1992-1993 Jean-loup Gailly

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
@end ifinfo

@titlepage
@title gzip
@subtitle The data compression program
@subtitle Edition 1.1.1, for Gzip Version 1.1.1
@subtitle June 1993
@author by Jean-loup Gailly

@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1992-1993 Jean-loup Gailly

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
@end titlepage

@node Top, , , (dir)

@ifinfo
This file documents the @code{gzip} command to compress files.
@end ifinfo

@menu
* Copying::		How you can copy and share @code{gzip}.
* Overview::		Preliminary information.
* Sample::		Sample output from @code{gzip}.
* Invoking gzip::	How to run @code{gzip}.
* Advanced usage::	Concatenated files.
* Environment::		The @code{GZIP} environment variable
* Tapes::               Using gzip on tapes.
* Problems::		Reporting bugs.
* Concept Index::	Index of concepts.
@end menu

@node Copying, Overview, , Top
@include gpl.texinfo

@node Overview, Sample, Copying, Top
@chapter Overview
@cindex overview

@code{Gzip} reduces the size of the named files using Lempel-Ziv coding
(LZ77).  Whenever possible, each file is replaced by one with the
extension ".gz", while keeping the same ownership modes, access and
modification times.  (The default extension is "-gz" for VMS, "z" for
MSDOS, OS/2 and Atari.)  If no files are specified, the standard input
is compressed to the standard output. If the new file name is too long,
@code{gzip} truncates it and keeps the original file name in the
compressed file.  @code{gzip} will only attempt to compress regular
files.  In particular, it will ignore symbolic links.

Compressed files can be restored to their original form using
"@code{gzip} -d" or @code{gunzip} or @code{zcat}.

@code{gunzip} takes a list of files on its command line and replaces
each file whose name ends with ".gz", ".z", ".Z", "-gz", "-z" or "_z"
and which begins with the correct magic number with an uncompressed file
without the original extension.  @code{gunzip} also recognizes the
special extensions ".tgz" and ".taz" as shorthands for ".tar.gz" and
".tar.Z" respectively.

@code{gunzip} can currently decompress files created by @code{gzip},
@code{zip}, @code{compress} or @code{pack}. The detection of the input
format is automatic.  When using the first two formats, @code{gunzip}
checks a 32 bit CRC (cyclic redundancy check). For @code{pack},
@code{gunzip} checks the uncompressed length. The @code{compress}
format was not designed to allow consistency checks. However @code{gunzip}
is sometimes able to detect a bad .Z file. If you get an error
when uncompressing a .Z file, do not assume that the .Z file is
correct simply because the standard @code{uncompress} does not complain.
This generally means that the standard @code{uncompress} does not check its
input, and happily generates garbage output.

Files created by @code{zip} can be uncompressed by @code{gzip} only if
they have a single member compressed with the 'deflation' method. This
feature is only intended to help conversion of @code{tar.zip} files to
the @code{tar.gz} format. To extract @code{zip} files with several
members, use @code{unzip} instead of @code{gunzip}.

@code{zcat} is identical to "@code{gunzip} -c".  @code{zcat}
uncompresses either a list of files on the command line or its standard
input and writes the uncompressed data on standard output.  @code{zcat}
will uncompress files that have the correct magic number whether they
have a ".gz" suffix or not.

@code{gzip} uses the Lempel-Ziv algorithm used in @code{zip} and PKZIP.
The amount of compression obtained depends on the size of the input and
the distribution of common substrings.  Typically, text such as source
code or English is reduced by 60-70%.  Compression is generally much
better than that achieved by LZW (as used in @code{compress}), Huffman
coding (as used in @code{pack}), or adaptive Huffman coding
(@code{compact}).

Compression is always performed, even if the compressed file is slightly
larger than the original. The worst case expansion is a few bytes for
the gzip file header, plus 5 bytes every 32K block, or an expansion
ratio of 0.015% for large files. Note that the actual number of used
disk blocks almost never increases. @code{gzip} preserves the mode,
ownership and timestamps of files when compressing or decompressing.

@node Sample, Invoking gzip, Overview, Top
@chapter Sample Output
@cindex sample

Here are some realistic examples of running @code{gzip}.

This is the output of the command @samp{gzip}:

@example
usage: gzip [-cdfhLrv19] [file ...]
For more help, type: gzip -h
@end example

This is the output of the command @samp{gzip -h}:

@example
gzip 1.1.1 (1 Jun 93)
usage: gzip [-cdfhLrtvV19] [-S suffix] [file ...]
 -c --stdout      write on standard output, keep original files unchanged
 -d --decompress  decompress
 -f --force       force overwrite of output file and compress links
 -h --help        give this help
 -L --license     display software license
 -q --quiet       suppress all warnings
 -r --recurse     recurse through directories
 -S --suffix .z   use suffix .z instead of .gz
 -t --test        test compressed file integrity (implies -d)
 -v --verbose     verbose mode
 -V --version     display version number
 -1 --fast        compress faster
 -9 --best        compress better
 file...          files to (de)compress. If none given, use standard input
@end example

This is the output of the command @samp{gzip -v gzip.c}:

@example
gzip.c:                 69.8% -- replaced with gzip.c.gz
@end example

@node Invoking gzip, Advanced usage, Sample, Top
@chapter Invoking @code{gzip}
@cindex invoking
@cindex options

The format for running the @code{gzip} program is:

@example
gzip @var{option} @dots{}
@end example

@code{gzip} supports the following options:

@table @samp
@item --stdout
@itemx -c
Write output on standard output; keep original files unchanged.
If there are several input files, the output consists of a sequence of
independently compressed members. To obtain better compression,
concatenate all input files before compressing them.

@item --decompress
@itemx --uncompress
@itemx -d
Decompress.

@item --force
@itemx -f
Force compression or decompression even if the file has multiple links
or the corresponding file already exists, or if the compressed data
is read from or written to a terminal. If -f is not given, and
when not running in the background, @code{gzip} prompts to verify
whether an existing file should be overwritten.

@item --help
@itemx -h
Print an informative help message describing the options then quit.

@item --license
@itemx -L
Display the @code{gzip} license then quit.

@item --recurse
@itemx -r
Travel the directory structure recursively. If any of the file names
specified on the command line are directories, @code{gzip} will descend
into the directory and compress all the files it finds there (or
decompress them in the case of @code{gunzip}).

@item --suffix .z
@itemx -S .z
Use suffix .z instead of .gz. Any suffix can be given, but suffixes
other than .z and .gz should be avoided to avoid confusion when files
are transferred to other systems.  Previous versions of gzip used
the .z suffix. This was changed to avoid a conflict with @code{pack}.

@item --test
@itemx -t
Test. Check the compressed file integrity.

@item --verbose
@itemx -v
Verbose. Display the name and percentage reduction for each file compressed.

@item --version
@itemx -V
Version. Display the version number and compilation options, then quit.

@item --fast
@itemx --best
@itemx -#
Regulate the speed of compression using the specified digit #, where -1
or --fast indicates the fastest compression method (less compression)
and --best or -9 indicates the slowest compression method (optimal
compression).  The default compression level is -5.
@end table

@node Advanced usage, Environment, Invoking gzip, Top
@chapter Advanced usage
@cindex concatenated files

Multiple compressed files can be concatenated. In this case,
@code{gunzip} will extract all members at once. If one member is
damaged, other members might still be recovered after removal of the
damaged member. Better compression can be usually obtained if all
members are decompressed then recompressed in a single step.

This is an example of concatenating gzip files:

@example
gzip -c file1  > foo.gz
gzip -c file2 >> foo.gz
@end example

Then

@example
gunzip -c foo
@end example

is equivalent to

@example
cat file1 file2
@end example

In case of damage to one member of a .gz file, other members can
still be recovered (if the damaged member is removed). However,
you can get better compression by compressing all members at once:

@example
cat file1 file2 | gzip > foo.gz
@end example

compresses better than

@example
gzip -c file1 file2 > foo.gz
@end example

If you want to recompress concatenated files to get better compression, do:

@example
zcat old.gz | gzip > new.gz
@end example

@node Environment, Tapes, Advanced usage, Top
@chapter Environment
@cindex Environment

The environment variable @code{GZIP} can hold a set of default options for
gzip.  These options are interpreted first and can be overwritten by
explicit command line parameters.  For example:

@example
for sh:    GZIP="-8 -v"; export GZIP
for csh:   setenv GZIP "-8 -v"
for MSDOS: set GZIP=-8 -v
@end example

On Vax/VMS, the name of the environment variable is @code{GZIP_OPT}, to
avoid a conflict with the symbol set for invocation of the program.

@node Tapes, Problems, Environment, Top
@chapter Using gzip on tapes
@cindex tapes

When writing compressed data to a tape, it is generally necessary to pad
the output with zeroes up to a block boundary. When the data is read and
the whole block is passed to @code{gunzip} for decompression,
@code{gunzip} detects that there is extra trailing garbage after the
compressed data and emits a warning by default. You have to use the
--quiet option to suppress the warning. This option can be set in the
@code{GZIP} environment variable, as in:

@example
for sh:    GZIP="-q"  tar xfz /dev/rmt/datn
for csh:   (setenv GZIP "-q"; tar xfz /dev/rmt/datn)
@end example

Make sure that the same block size (-b option of @code{tar}) is used for
reading and writing compressed data on tapes.

@node Problems, Concept Index, Tapes, Top
@chapter Reporting Bugs
@cindex bugs

If you find a bug in @code{gzip}, please send electronic mail to
@w{@samp{jloup@@chorus.fr}} or, if this fails, to
@w{@samp{bug-gnu-utils@@prep.ai.mit.edu}}.  Include the version number,
which you can find by running @w{@samp{gzip -V}}.  Also include in your
message the hardware and operating system, the compiler used to compile,
a description of the bug behavior, and the input to gzip that triggered
the bug.@refill

@node Concept Index, , Problems, Top
@unnumbered Concept Index

@printindex cp

@shortcontents
@contents
@bye
