Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) 19yy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
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 FAT and Atari.) If no files are specified or
if a file name is "-", the standard input is compressed to the standard
gzip will only attempt to compress regular files. In
particular, it will ignore symbolic links.
If the new file name is too long for its file system,
gzip attempts to truncate only the parts of the
file name longer than 3 characters. (A part is delimited by dots.) If
the name consists of small parts only, the longest parts are truncated.
For example, if file names are limited to 14 characters, gzip.msdos.exe
is compressed to gzi.msd.exe.gz. Names are not truncated on systems
which do not have a limit on file name length.
gzip keeps the original file name and timestamp in
the compressed file. These are used when decompressing the file with the
`-N' option. This is useful when the compressed file name was
truncated or when the time stamp was not preserved after a file
Compressed files can be restored to their original form using `gzip -d'
zcat. If the original name saved in the
compressed file is not suitable for its file system, a new name is
constructed from the original one to make it legal.
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.
gunzip also recognizes the special extensions `.tgz' and
`.taz' as shorthands for `.tar.gz' and `.tar.Z'
respectively. When compressing,
gzip uses the `.tgz'
extension if necessary instead of truncating a file with a `.tar'
gunzip can currently decompress files created by
pack. The detection of the input
format is automatic. When using the first two formats,
checks a 32 bit CRC (cyclic redundancy check). For
gunzip checks the uncompressed length. The
was not designed to allow consistency checks. However
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
uncompress does not complain.
This generally means that the standard
uncompress does not check
its input, and happily generates garbage output. The SCO `compress
-H' format (
lzh compression method) does not include a CRC but
also allows some consistency checks.
Files created by
zip can be uncompressed by
gzip only if
they have a single member compressed with the 'deflation' method. This
feature is only intended to help conversion of
tar.zip files to
tar.gz format. To extract
zip files with several
unzip instead of
zcat is identical to `gunzip -c'.
uncompresses either a list of files on the command line or its standard
input and writes the uncompressed data on standard output.
will uncompress files that have the correct magic number whether they
have a `.gz' suffix or not.
gzip uses the Lempel-Ziv algorithm used in
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
coding (as used in
pack), or adaptive Huffman coding
Compression is always performed, even if the compressed file is slightly
larger than the original. The worst case expansion is a few bytes for
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.
gzip preserves the mode,
ownership and timestamps of files when compressing or decompressing.
Here are some realistic examples of running
This is the output of the command `gzip -h':
gzip 1.2.4 (18 Aug 93) usage: gzip [-cdfhlLnNrtvV19] [-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 --list list compressed file contents -L --license display software license -n --no-name do not save or restore the original name and time stamp -N --name save or restore the original name and time stamp -q --quiet suppress all warnings -r --recursive operate recursively on directories -S .suf --suffix .suf use suffix .suf on compressed files -t --test test compressed file integrity -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.
This is the output of the command `gzip -v texinfo.tex':
texinfo.tex: 71.6% -- replaced with texinfo.tex.gz
The following command will find all
gzip files in the current
directory and subdirectories, and extract them in place without
destroying the original:
find . -name '*.gz' -print | sed 's/^\(.*\)[.]gz$/gunzip < "&" > "\1"/' | sh
The format for running the
gzip program is:
gzip option ...
gzip supports the following options:
gzip, and if the option --stdout is also given, copy the input data without change to the standard ouput: let
cat. If `-f' is not given, and when not running in the background,
gzipprompts to verify whether an existing file should be overwritten.
compressed size: size of the compressed file uncompressed size: size of the uncompressed file ratio: compression ratio (0.0% if unknown) uncompressed_name: name of the uncompressed fileThe uncompressed size is given as `-1' for files not in
gzipformat, such as compressed `.Z' files. To get the uncompressed size for such a file, you can use:
zcat file.Z | wc -cIn combination with the --verbose option, the following fields are also displayed:
method: compression method (deflate,compress,lzh,pack) crc: the 32-bit CRC of the uncompressed data date & time: time stamp for the uncompressed fileThe crc is given as ffffffff for a file not in gzip format. With --verbose, the size totals and compression ratio for all files is also displayed, unless some sizes are unknown. With --quiet, the title and totals lines are not displayed.
gziplicense then quit.
gzipsuffix from the compressed file name) and do not restore the original time stamp if present (copy it from the compressed file). This option is the default when decompressing.
gzipwill descend into the directory and compress all the files it finds there (or decompress them in the case of
gunzip -S "" * (*.* for MSDOS)Previous versions of gzip used the `.z' suffix. This was changed to avoid a conflict with
Multiple compressed files can be concatenated. In this case,
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 and then recompressed in a single step.
This is an example of concatenating
gzip -c file1 > foo.gz gzip -c file2 >> foo.gz
gunzip -c foo
is equivalent to
cat file1 file2
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:
cat file1 file2 | gzip > foo.gz
compresses better than
gzip -c file1 file2 > foo.gz
If you want to recompress concatenated files to get better compression, do:
zcat old.gz | gzip > new.gz
If a compressed file consists of several members, the uncompressed size and CRC reported by the `--list' option applies to the last member only. If you need the uncompressed size for all members, you can use:
zcat file.gz | wc -c
If you wish to create a single archive file with multiple members so
that members can later be extracted independently, use an archiver such
tar supports the `-z'
option to invoke
gzip is designed as a
tar, not as a replacement.
The environment variable
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:
for sh: GZIP="-8v --name"; export GZIP for csh: setenv GZIP "-8v --name" for MSDOS: set GZIP=-8v --name
On Vax/VMS, the name of the environment variable is
avoid a conflict with the symbol set for invocation of the program.
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
gunzip for decompression,
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
GZIP environment variable, as in:
for sh: GZIP="-q" tar -xfz --block-compress /dev/rst0 for csh: (setenv GZIP "-q"; tar -xfz --block-compress /dev/rst0)
In the above example,
gzip is invoked implicitly by the `-z'
option of GNU
tar. Make sure that the same block size (`-b'
tar) is used for reading and writing compressed data on
tapes. (This example assumes you are using the GNU version of
If you find a bug in
gzip, please send electronic mail to
`[email protected]' or, if this fails, to
`[email protected]'. Include the version number,
which you can find by running `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
Jump to: b - c - e - i - o - s - t
This document was generated on 7 November 1998 using the texi2html translator version 1.52.