Linux基础命令---gzip

简介:
gzip
      gzip通过Lempel-ziv算法来压缩文件,压缩的时候保留每个文件的所有者、权限、修改时间。对于符号链接,gzip将会忽略它。
如果压缩的文件名对其文件系统来说太长,则gzip将截断它。Gzip试图只截断文件名中超过3个字符的部分。(部分由点分隔。)如果名称仅由小部件组成,最长的部分将被截断。例如,如果文件名限制为14个字符,则“gzip.msdos.exe”压缩为“gzi.msd.exe.gz”。在没有文件名长度限制的系统中,名称不会被截断。
      默认情况下,gzip将原始文件名和时间戳保存在压缩文件中。这些在使用“-N”选项解压缩文件时使用。当压缩文件名被截断或文件传输后没有保留时间戳时,这是非常有用的。压缩文件可以使用“gzip –d”或“gunzip”或“zcat”恢复到它们的原始形式。如果保存在压缩文件中的原始名称不适合其文件系统,则从原始文件中构造新名称以使其合法。
      gunzip在其命令行中获取一个文件列表,并替换其名称以.gz、-z、-z、_z或.z结尾的每个文件,该文件以正确的魔术号开头,文件的未压缩文件没有原来的扩展名。gunzip还将特殊的扩展名.tgz和.taz分别识别为.tar.gz和.tar.z的缩写。压缩时,gzip在必要时使用.tgz扩展名,而不是截断扩展名为.tar的文件。
      gunzip目前可以解压缩由gzip,zip,compress-H或Pack创建的文件.输入格式的检测是自动的。当使用前两种格式时,gunzip检查32位CRC。对于包,枪拉链检查未压缩长度。标准压缩格式的设计不是为了允许一致性检查。然而,gunzip有时能够检测到一个坏的.z文件。如果在解压缩.z文件时出现错误,请不要仅仅因为标准解压缩不抱怨而认为.Z文件是正确的。这通常意味着标准解压缩不检查其输入,并愉快地生成垃圾输出。上海合作组织压缩-H格式(lzh压缩方法)不包括一个CRC,但也允许一些一致性检查。
      由zip创建的文件只有在使用“通缩”方法压缩单个成员的情况下才能被gzip解压缩。此特性仅用于帮助将tar.zip文件转换为tar.gz格式。要使用单个成员提取zip文件,可以使用诸如“gunzip  <  foo.zip”或“gunzip  –S  .zip  foo.zip”之类的命令。要提取包含多个成员的zip文件,请使用解压缩而不是gunzip。
      Zcat和“gunzip  –c”是一样的。(在某些系统上,可以将zcat安装为gzcat,以保留原始链接以进行压缩。)zcat解压缩命令行上的文件列表或其标准输入,并将未压缩的数据写入标准输出。无论是否有.gz后缀,zcat都会解压缩具有正确魔术号的文件。
Gzip使用用于zip和PKZIP的Lempel-Ziv算法。获得的压缩量取决于输入的大小和常用子字符串的分布。通常,像源代码或英语这样的文本会减少60-70%.压缩通常比LZW(用于压缩)、Huffman编码(用于Pack)或自适应Huffman编码(紧凑)要好得多。
      压缩总是被执行,即使压缩文件比原始文件稍大。最坏的情况是gzip文件头的几个字节,加上每32K块5个字节,或者大文件的扩展率为0.015%。注意,使用过的磁盘块的实际数量几乎从未增加。gzip在压缩或解压缩时保留文件的模式、所有权和时间戳。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      gzip  [ -acdfhlLnNrtvV19 ]  [-S suffix]  [ name ...  ] 

2、选项列表
      -h | --help
            帮助信息
      -V | --version
            显示命令版本信息
      -a | --ascii
            文本模式,只适用于某些系统
      -c | --stdout | --to-stdout
            将解压文件写到标准输出,源文件不变。如果有多个输入文件,则输出由一系列独立压缩的成员组成。为了获得更好的压缩,在压缩所有输入文件之前先将它们连接起来。
      -d | --decompress | --uncompress
            解压
      -f | --force
            强制执行
      -l | --list
            对于每一个压缩的文件,列出压缩文件大小、解压大小、压缩比列、压缩前的文件名字
      -L | --license
            列出gzip的许可证
      -n | --no-name
            压缩文件的时候,不保留原始文件名字和时间属性
      -N | --name
            压缩的时候,保留原始文件和时间属性
      -q | --quite
            跳过所有的警告信息
      -r | --recursive
            递归压缩子目录
      -S |.suf | --suffix | .suf
            指定压缩文件后缀。压缩时,使用后缀.suf代替.gz。可以提供任何非空后缀,但应避免使用.z和.gz以外的后缀,以避免文件传输到其他系统时出现混淆。
      -t | --test
            测试
      -v | --verbose
            显示执行过程
      -num | --fast | --best
            使用指定的数字num调整压缩速度,其中-1或--fast表示最快的压缩方法(较小的压缩)和-9或--best表示最慢的压缩方法(最佳压缩)。默认的压缩级别是-6(也就是说,以牺牲速度为代价倾向于高压缩)。

3、环境变量
      环境变量GZIP可以保存gzip的一组默认选项。这些选项首先被解释,可以被显式命令行参数覆盖。例如
      for sh:    GZIP="-8v --name"; export GZIP
      for csh:   setenv GZIP "-8v --name"
      for MSDOS: set GZIP=-8v --name
      在VAX/VMS上,环境变量的名称为GZIP_OPT,以避免与用于调用程序的符号设置冲突。

4、诊断信息
      退出状态通常为0;如果发生错误,退出状态为1。如果发生警告,退出状态为2。
      Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
      在命令行上指定了无效选项
      file: not in gzip format
      指定给gunzip的文件尚未压缩。
      file: Corrupt input. Use zcat to recover some data.
      压缩文件已损坏。
      file: compressed with xx bits, can only handle yy bits
      用gzip重新压缩文件,压缩更好,内存更少。
      file: already has .gz suffix -- no change
      假定该文件已被压缩。重命名该文件,然后再试一次。
      file already exists; do you wish to overwrite (y or n)?
      如果希望替换输出文件,请响应“y”;如果不希望替换输出文件,则响应“n”。
      gunzip: corrupt input
      检测到SIGSEGV违规,这通常意味着输入文件已损坏。
      xx.x% Percentage of the input saved by compression.
      只与-v和-l有关。
      -- not a regular file or directory: ignored
      当输入文件不是常规文件或目录(例如符号链接、套接字、FIFO、设备文件)时,它将保持不变。
      -- has xx other links: unchanged
      输入文件有链接;它保持不变。有关更多信息,请参见ln(1)。使用-f标志强制压缩多链接文件。

5、一些先进用法
      可以连接多个压缩文件。在这种情况下,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)。GNUtar支持-z选项来透明地调用gzip。gzip是作为tar的补充,而不是替代。

6、实例
1)压缩文件
      [root@localhost weijie]#  gzip 1.c              //压缩
      [root@localhost weijie]#  ls                     //压缩之后,源文件被删除了
      11.c  1.c.gz  2.c  3.c  4.c  5.c  6.c  foo
2)解压
      [root@localhost weijie]#  gzip -ld 1.c.gz       //解压,并显示详细过程
         compressed        uncompressed  ratio uncompressed_name
                 70                  53   9.4% 1.c
3)将两个文件压缩到一个文件中
      [root@localhost weijie]#  cat 1.c 2.c                   //输出两个文件的内容
      hello world, 
      i am david. 
      i love linux, 
      love code.
      123
      23
      212
      [root@localhost weijie]#  gzip –c 1.c > foo.gz        //将1.c压缩到foo
      [root@localhost weijie]#  gzip –c 2.c >> foo.gz       //将2.c压缩到foo
      [root@localhost weijie]#  gzip -d foo.gz               //解压foo
      [root@localhost weijie]#  cat foo                       //显示foo的内容
      hello world, 
      i am david. 
      i love linux, 
      love code.
      123
      23
      212
相关文章
|
22天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
56 23
Linux系统之whereis命令的基本使用
|
4月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
397 8
|
4月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1224 6
|
4月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
241 3
|
4月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
157 2
|
9天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
66 25
|
7天前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
20 2
|
2月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
46 11
|
3月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
118 14
Linux 10 个“who”命令示例
|
3月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
262 20