gzip,gunzip and zcat (压缩或展开GNU GZIP格式的文件)

少年 发表于 2020-07-01 15:09
浏览次数:
在手机上阅读

在类Unix操作系统上,gzip、ganzip和zcat命令用于压缩或展开GNU GZIP格式的文件。

查看英文版

目录

1 gzip,gunzip and zcat 运行系统环境

2 gzip,gunzip and zcat 描述

3 gzip,gunzip and zcat 语法

4 gzip,gunzip and zcat 示例

gzip,gunzip and zcat 运行系统环境

Unix&Linux

gzip,gunzip and zcat 描述

gzip使用Lempel - Ziv编码(LZ77)减小了命名文件的大小。只要有可能,每个文件都会被扩展名为 .gz的文件替换,同时保留相同的所有权 模式,访问和修改时间。(对于VMS,默认扩展名是-gz;对于MSDOS,OS / 2 FAT,Windows NT FAT和Atari,默认扩展名是z。)如果未指定文件,或者文件名是“ - ”,则标准输入将压缩为标准输出。gzip 只会尝试压缩常规文件。特别是,它会忽略符号链接。

如果压缩文件名对其文件系统而言太长,则gzip会将其截断。gzip尝试截断文件名中长度超过3个字符的部分。(部分由点分隔。)如果名称仅由小部分组成,则最长的部分将被截断。例如,如果文件名限制为14个字符,gzip.msdos.exe被压缩到gzi.msd.exe.gz。在文件名长度没有限制的系统上,名称不会被截断。

默认情况下,gzip将原始文件名和时间戳保留在压缩文件中。当使用-N选项解压缩文件时,将使用它们。当压缩文件名被截断或文件传输后未保存时间戳时,此设置很有用。

可以使用gzip -d或gunzip或zcat将压缩文件恢复为原始格式。如果保存在压缩文件中的原始名称不适合其文件系统,则将从原始名称中构造一个新名称以使其合法。

gunzip在其命令行上获取文件列表,并替换每个名称以.gz,-gz,.z,-z或_z 结尾的文件(忽略大小写),并以正确的幻数开头并带有未压缩的文件,而无需原始扩展名。gunzip也将特殊扩展名.tgz和.taz分别视为.tar.gz和.tar.Z的简写。压缩时,如果需要,gzip使用.tgz扩展名,而不是截断具有.tar扩展名的文件。

gunzip当前可以解压缩gzip,zip,compress,compress -H或pack创建的文件。输入格式的检测是自动的。当使用前两种格式时,gunzip检查32位CRC。对于pack,gunzip检查未压缩的长度。标准压缩格式的设计不允许进行一致性检查。但是,gunzip有时能够检测到错误的.Z文件。如果解压缩.Z文件时遇到错误,请不要以为.Z文件是正确的,因为标准解压缩不会抱怨。通常,这意味着标准解压缩不检查其输入,并愉快地生成垃圾输出。的SCO 压缩-H格式(LZH压缩方法)不包括CRC但也允许一些一致性检查。

zip创建的文件只有在具有通过'deflation'方法压缩的单个成员的情况下,才能通过gzip解压缩。此功能仅用于帮助将tar.zip文件转换为tar.gz格式。要使用单个成员提取一个zip文件,请使用类似以下命令:

gunzip 

或者:

gunzip -S .zip foo.zip

要提取具有多个成员的zip文件,请使用unzip而不是gunzip。

zcat与gunzip -c相同。(在某些系统上,zcat可以作为gzcat安装,以保留原始compress链接。)zcat可以解压缩命令行或其标准输入上的文件列表,并将未压缩的数据写入标准输出。zcat将解压缩具有正确幻数的文件,无论它们是否具有.gz 后缀。

gzip使用zip和PKZIP中使用的Lempel-Ziv算法。获得的压缩量取决于输入的大小和公共子字符串的分布。通常,诸如源代码或英语之类的文本减少60-70%。压缩通常比LZW(在compress中使用),Huffman编码(在pack中使用)或自适应Huffman编码(紧凑)所实现的要好得多。

即使压缩文件比原始文件稍大,也始终执行压缩。最坏的情况是gzip文件头扩展为几个字节,每32 K块增加5个字节,或者大文件扩展率为0.015%。请注意,实际使用的磁盘块数几乎不会增加。gzip在压缩或解压缩时会保留文件的模式,所有权和时间戳。

gzip reduces the size of the named files using Lempel-Ziv coding (LZ77). Whenever possible, each file is replaced by one with theextension .gz, while keeping the same ownership modes, access and modification times. (The default extension is -gz for VMS, z for MSDOS, OS/2 FAT, Windows NT FAT and Atari.) If no files are specified, or if a file name is "-", the standard input is compressed to the standard output.gzip will only attempt to compress regular files. In particular, it ignoressymbolic links.

If the compressed file name is too long for its file system, gzip truncates it. 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 togzi.msd.exe.gz. Names are not truncated on systems which do not have a limit on file name length.

By default, gzip keeps the original file name and timestamp in the compressed file. These are used when decompressing the file with the -N option. This setting is useful when the compressed file name was truncated or when the time stamp was not preserved after a file transfer.

Compressed files can be restored to their original form using gzip -d or gunzip or 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, -gz, .z, -z, or _z (ignoring case) 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 extension.

gunzip can currently decompress files created by gzip, zip, compress, compress -H or pack. The detection of the input format is automatic. When using the first two formats, gunzip checks a 32-bit CRC. For pack, gunzip checks the uncompressed length. The standard compress format was not designed to allow consistency checks. However gunzipis 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 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 the tar.gz format. To extract a zip file with a single member, use a command like:

gunzip

or:

gunzip -S .zip foo.zip

To extract zip files with several members, use unzip instead of gunzip. zcat is identical to gunzip -c. (On some systems, zcat may be installed as gzcat to preserve the original link to compress.) zcat uncompresses either a list of files on the command line or its standard input and writes the uncompressed data on standard output. zcat 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 compress), Huffman coding (as used in pack), or adaptive Huffman coding (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 32 K 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.

查看英文版

查看中文版

gzip,gunzip and zcat 语法

gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ...  ]
gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ...  ]
zcat [ -fhLV ] [ name ...  ]
选项
-a,-- ascii ASCII文本模式:使用本地约定转换行尾。仅在某些非Unix系统上支持此选项。对于MSDOS,CR LF被转换为LF压缩时,解压和当LF被转换为CR LF。
-c,--stdout,--to-stdout中 将输出写入标准输出;保持原始文件不变。如果有多个输入文件,则输出由一系列独立压缩的成员组成。为了获得更好的压缩效果,请在压缩所有输入文件之前对其进行串联。
-d,--decompress,-- uncompress 解压
-f,--force 即使文件具有多个链接或相应的文件已经存在,或者从终端读取或写入压缩数据,也应强制进行压缩或解压。如果输入数据的格式不是gzip可以识别的格式,并且还提供了--stdout选项,则将输入数据复制而不更改到标准输出中:让zcat表现为cat。如果未指定-f且未在后台运行,则gzip提示您验证是否应覆盖现有文件。
-h,--help 显示帮助屏幕并退出。
-l,--list 对于每个压缩文件,列出以下字段:

compressed size 压缩文件的大小
uncompressed size 未压缩文件的大小
ratio 压缩比(未知时为0.0%)
uncompressed_name 未压缩文件的名称
对于非gzip格式的文件(如压缩的.Z文件),解压大小指定为-1。要获取此类文件的解压大小,您可以使用:

zcat file.Z | wc -c
与--verbose选项结合使用时,还将显示以下字段:

method 压缩方式
crc 未压缩数据的32位CRC
date & time 未压缩文件的时间戳
当前支持的压缩方法是deflate,compress,lzh(SCO compress -H)和pack。对于非gzip格式的文件,crc以ffffffff的形式给出。 使用--name,未压缩的名称,日期和时间将存储在压缩文件中(如果存在)。 使用--verbose,还将显示所有文件的总大小和压缩率,除非某些大小未知。使用--quiet,不显示标题和总计行。
-L, --license 显示gzip许可证并退出。
-n,-- no-name 压缩时,默认情况下不要保存原始文件名和时间戳。(如果必须截断原始名称,则始终会保留原始名称。)解压时,请勿还原原始文件名(如果存在)(从压缩文件名中仅删除gzip后缀),并且不还原原始时间戳记(如果存在) (从压缩文件中复制)。解压时,此选项是默认选项。
-N,-- name 压缩时,请务必保存原始文件名和时间戳。这是默认值。解压时,请还原原始文件名和时间戳(如果有)。该选项在文件名长度受到限制的系统上或在文件传输后丢失了时间戳记的系统上很有用。
-q, --quiet 禁止所有警告。
-r, --recursive 旅行的目录结构 递归。如果在命令行上指定的任何文件名都是目录,则gzip将下降到该目录并压缩在该目录中找到的所有文件(如果是gunzip,则将其解压)。
-S .suf, --suffix .suf 压缩时,请使用后缀。suf而不是.gz。可以给出任何非空的后缀,但是应避免使用.z和.gz以外的后缀,以免在文件传输到其他系统时造成混淆。

解压时,添加。从输入文件名派生输出文件名时,将suf替换为要尝试的后缀列表的开头。
-t,--test 测试。检查压缩文件的完整性。
-v,-- verbose 详细。显示每个压缩或解压文件的名称和减少的百分比。
-V,-- version 版。显示版本号和编译选项,然后退出。
,-- fast,--best 使用指定的数字调节压缩速度,其中-1或--fast表示最快的压缩方法(较少压缩),而-9或--best表示最慢的压缩方法(最佳压缩)。默认压缩级别为-6(也就是说,偏向于高压缩,而牺牲了速度)。
高级用法

可以压缩多个压缩文件。在这种情况下,gunzip将立即提取所有成员。例如:

gzip -c file1> foo.gz
gzip -c file2 >> foo.gz

然后:

gunzip -c foo

等效于:

cat file1 file2

如果.gz文件的一个文件损坏了,其他文件仍然可以恢复(如果损坏的成员已删除)。但是,可以通过一次压缩所有文件来获得更好的压缩:

cat file1 file2 | gzip> foo.gz

压缩效果优于:

gzip -c file1 file2> foo.gz

如果要重新压缩连接的文件以获得更好的压缩,请执行以下操作:

gzip -cd old.gz | gzip> new.gz

如果压缩文件由多个文件组成,则--list选项报告的未压缩大小和CRC仅适用于最后一个成员。如果所有文件都需要未压缩的大小,则可以使用:

gzip -cd file.gz | wc -c

如果要创建具有多个文件的单个存档文件,以便以后可以独立提取文件,请使用tar或zip之类的存档器。GNU tar支持-z选项来透明地调用gzip。gzip设计为tar的补充,而不是替代。

环境

在环境变量 GZIP能够控制一系列的默认选项gzip的。这些选项首先被解释,并且可以由显式命令行参数覆盖。例如:

对于sh:

GZIP =“-8v --name”; 出口GZIP

对于csh:

setenv GZIP "-8v --name"

对于MSDOS:

set GZIP=-8v --name

在VAX/VMS上,环境变量的名称为GZIP_OPT,以避免与程序调用的符号集冲突。

gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ...  ]
gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ...  ]
zcat [ -fhLV ] [ name ...  ]

options

-a, --ascii ASCII text mode: convert end-of-lines using local conventions. This option is supported only on some non-Unix systems. For MSDOS, CR LF is converted to LF when compressing, and LF is converted to CR LF when decompressing.
-c, --stdout, --to-stdout 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.
-d, --decompress, --uncompress Decompress.
-f, --force 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 the input data is not in a format recognized by gzip, and if the option --stdout is also given, copy the input data without change to the standard output: let zcat behave as cat. If -f is not given, and when not running in the background, gzip prompts to verify whether an existing file should be overwritten.
-h, --help Display a help screen and quit.
-l, --list For each compressed file, list the following fields:

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 file
The uncompressed size is given as -1 for files not in gzip format, such as compressed .Z files. To get the uncompressed size for such a file, you can use:

zcat file.Z | wc -c
In combination with the --verbose option, the following fields are also displayed:

method compression method
crc the 32-bit CRC of the uncompressed data
date & time time stamp for the uncompressed file
The compression methods currently supported are deflate, compress, lzh (SCO compress -H) and pack. The crc is given as ffffffff for a file not in gzip format.

With --name, the uncompressed name, date and time are those stored within the compress file if present.

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.
-L, --license Display the gzip license and exit.
-n, --no-name When compressing, do not save the original file name and timestamp by default. (The original name is always saved if the name had to be truncated.) When decompressing, do not restore the original file name if present (remove only the gzip suffix 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.
-N, --name When compressing, always save the original file name and time stamp; this is the default. When decompressing, restore the original file name and time stamp if present. This option is useful on systems which have a limit on file name length or when the time stamp has been lost after a file transfer.
-q, --quiet Suppress all warnings.
-r, --recursive Travel the directory structure recursively. If any of the file names specified on the command line are directories, gzip will descend into the directory and compress all the files it finds there (or decompress them in the case of gunzip).
-S .suf, --suffix .suf When compressing, use suffix .suf instead of .gz. Any non-empty suffix can be given, but suffixes other than .z and .gz should be avoided to avoid confusion when files are transferred to other systems.

When decompressing, add .suf to the beginning of the list of suffixes to try, when deriving an output file name from an input file name.
-t, --test Test. Check the compressed file integrity.
-v, --verbose Verbose. Display the name and percentage reduction for each file compressed or decompressed.
-V, --version Version. Display the version number and compilation options then quit.
-#, --fast, --best Regulate the speed of compression using the specified digit #, where -1 or --fastindicates the fastest compression method (less compression) and -9 or --bestindicates the slowest compression method (best compression). The default compression level is -6 (that is, biased towards high compression at expense of speed).
Advanced Usage

Multiple compressed files can be concatenated. In this case, gunzip will extract all members at once. For example:

gzip -c file1  > foo.gz
gzip -c file2 >> foo.gz

Then:

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:

gzip -cd 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:

gzip -cd file.gz | wc -c

If you want to create a single archive file with multiple members so that members can later be extracted independently, use an archiver such as tar or zip. GNU tar supports the -z option to invoke gzip transparently. gzip is designed as a complement to tar, not as a replacement.

Environment

The environment variable GZIP can hold a set of default options forgzip. 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 GZIP_OPT, to avoid a conflict with the symbol set for invocation of the program.

查看英文版

查看中文版

gzip,gunzip and zcat 示例

zcat myfiles.tar.gz | more

打印gzip tar archive vemyfiles.tar.gz中所有文件的内容,将输出通过管道传递给more命令,该命令会对输出进行分页(在每页的末尾暂停)。

gzip backup.tar

压缩tar归档文件backup.tar,并将其重命名为backup.tar.gz。

gunzip backup.tar.gz

解压gzip文件backup.tar.gz,将其重命名为backup.tar。

gzip -r backupfolder

递归压缩文件夹BackupFolder中的所有文件,以及该文件夹的任何子目录中的所有文件,并为其提供扩展名.gz。

gunzip -r backupfolder

递归解压缩文件夹backup文件夹中的所有gzip文件,并从文件名中删除扩展名.gz。

gzip -c myfile.txt > myfile.txt.gz

压缩文件myfile.txt,将压缩的文件数据写入标准输出,在本例中,标准输出被重定向到文件myfile.txt.gz。结果是,在运行该命令之后,原始文件和gzip文件都将存在。

zcat myfile.txt.gz

打印压缩文件myfile.txt.gz的未压缩内容。输出与使用命令cat myfile.txt打印未压缩文件的内容相同。

gunzip -c myfile.txt.gz > myfile.txt

将gzip文件myfile.txt.gz解压缩为标准输出,在本例中,标准输出被重定向到文件myfile.txt。如果myfile.txt已经存在,shell将提示您覆盖它(或不覆盖它)。

zcat myfiles.tar.gz | more

Prints the contents of all files within the gzipped tar archivemyfiles.tar.gz, piping the output to the more command, which pages the output (pauses at the end of each page).

gzip backup.tar

Compresses the tar archive backup.tar, and renames it backup.tar.gz.

gunzip backup.tar.gz

Uncompresses the gzipped file backup.tar.gz, renaming it backup.tar.

gzip -r backupfolder

Recursively compresses all files in the folder backupfolder, and all files in any subdirectories of that folder, and gives them the extension .gz.

gunzip -r backupfolder

Recursively uncompresses all gzipped files in the folder backupfolder, and removes the extension .gz from the filenames.

gzip -c myfile.txt > myfile.txt.gz

Compresses the file myfile.txt, writing the compressed file data to standard output, which in this case is redirected to a file, myfile.txt.gz. The result is that the original file and the gzipped file will both exist after the command is run.

zcat myfile.txt.gz

Prints the uncompressed contents of the compressed file myfile.txt.gz. The output is identical to printing the contents of the uncompressed file with the command cat myfile.txt.

gunzip -c myfile.txt.gz > myfile.txt

Uncompresses the gzipped file myfile.txt.gz to standard output, which in this case is redirected to the file myfile.txt. If myfile.txt already exists, the shell will prompt you to overwrite it (or not).

有关其他示例,请参阅上面的高级用法。

See the above advanced usage for additional examples.

查看英文版

查看中文版

其他命令行

gawk | getfacl | gpasswd | gprof | grep | groupadd | groupdel | groupmod |

如此好文,分享给朋友