gz是linux系统中常用的压缩文件格式,基于gzip压缩算法生成,通常用来压缩单个文件或者和tar打包结合使用。掌握gz文件的解压方法是linux用户的基础操作能力,不同场景下可以使用不同的命令完成解压。

基础解压命令:gzip与gunzip
如果是单个的gz压缩文件,不需要保留原压缩包的话,可以直接使用gunzip命令,这个命令是gzip的软链接,功能一致。比如当前目录下有一个名为test.txt.gz的压缩文件,执行以下命令即可解压:
# 解压test.txt.gz,解压后会删除原gz文件,生成test.txt gunzip test.txt.gz
如果需要保留原压缩文件,可以使用gzip命令的-d参数配合-k参数,-d表示解压,-k表示保留原文件:
# 解压test.txt.gz,保留原压缩文件,生成test.txt gzip -dk test.txt.gz
解压tar打包的gz文件
很多时候我们遇到的gz文件其实是先用tar打包多个文件,再用gzip压缩得到的,这类文件通常后缀是.tar.gz或者.tgz,这时候需要结合tar命令来解压。tar命令的-z参数就是用来处理gzip压缩格式的,常用参数说明如下:
-z:调用gzip程序处理压缩文件-x:解压文件-v:显示解压过程-f:指定要处理的文件名,这个参数必须放在所有参数的最后-C:指定解压到的目标目录
比如解压package.tar.gz到当前目录,执行以下命令:
# 解压package.tar.gz到当前目录,显示解压过程 tar -zxvf package.tar.gz
如果需要解压到/opt目录下,可以加上-C参数:
# 解压package.tar.gz到/opt目录 tar -zxvf package.tar.gz -C /opt
常见注意事项
权限问题
如果解压文件的目标目录没有写入权限,会提示权限不足,这时候可以切换到root用户执行命令,或者在命令前加sudo获取临时权限:
# 使用sudo权限解压文件到系统目录 sudo tar -zxvf package.tar.gz -C /usr/local
文件覆盖问题
如果解压目录下已经存在同名文件,默认会直接覆盖,不会给出提示。如果不想覆盖已有文件,可以在tar命令后加上--skip-old-files参数,这样遇到同名文件会跳过解压:
# 解压时跳过已存在的同名文件 tar -zxvf package.tar.gz --skip-old-files
查看gz文件内容
如果只是想查看gz压缩文件里的内容,不需要解压,可以使用zcat命令,它会直接将压缩文件的内容输出到终端:
# 查看test.txt.gz的压缩内容 zcat test.txt.gz