Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux gzip 命令。

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 -dgunzipzcat命令将压缩文件还原为其原始形式。如果压缩文件中保存的原始名称不适合其所在的文件系统,则会构造一个新的名称使其合法。

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

推荐文档