gzip,gunzip and zcat
在类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,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 |
对于每个压缩文件,列出以下字段:
zcat file.Z | wc -c与--verbose选项结合使用时,还将显示以下字段:
|
|||||||||||||||
-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,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将提示您覆盖它(或不覆盖它)。
有关其他示例,请参阅上面的高级用法。
查看英文版