1、命令简介
gzip:Linux中的gzip命令用于压缩文件,它是GNU压缩程序的一部分,可以将单个文件或多个文件进行压缩,并将压缩后的文件保存为.gz
扩展名的文件。压缩后的文件通常占用更少的磁盘空间,可以减少文件传输时间和网络带宽的使用。
gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ... ] gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ]
3、命令描述
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
在压缩文件中保留原始文件名和时间戳。这些信息在使用-d
选项进行解压缩时会被使用。这在压缩文件名被截断或文件传输后未保留时间戳时非常有用。
可以使用gzip -d
、gunzip
或zcat
命令将压缩文件还原为其原始形式。如果压缩文件中保存的原始名称不适合其所在的文件系统,则会构造一个新的名称使其合法。
4、命令选项
选项 | 描述 |
-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, --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 (即以高压缩为代价的速度优先)。 |
5、使用示例
1)压缩文件使用"gzip"命令
$ gzip test.sh
输出:
$ ls
test.sh
$ gzip test.sh
$ ls
test.sh.gz
2)解压缩文件使用"gzip"命令
$ gzip -d test.sh.gz
输出:
$ ls
test.sh.gz
$ gzip -d test.sh.gz
$ ls
test.sh
3)强制压缩文件
$ gzip -f test.sh
输出:
$ ls
test.sh
$ gzip -f test.sh
$ ls
test.sh.gz
4)保留未压缩的文件
$ gzip -k test.sh
输出:
$ ls
test.sh
$ gzip -k test.sh
$ ls
test.sh test.sh.gz
5)压缩文件夹及其子文件夹中的所有文件
$ gzip -r /tmp
输出:
$ ls /tmp/
abc xyz
$ gzip -r /tmp/
$ ls /tmp/
abc.gz xyz.gz
6)测试压缩文件的有效性
$ gzip -t test.sh.gz
输出:
如果压缩文件有效,则屏幕上不显示任何输出。
7)更改压缩级别
以最快速度获得最小压缩:
$ gzip -1 test.sh
以最慢速度获得最大压缩:
$ gzip -9 test.sh
输出:
test.sh.gz