Linux gzip 命令使用说明
Linux gzip 命令使用说明引言在 Linux 系统中文件压缩是一项非常常见的操作尤其是在磁盘空间有限或需要传输大量数据的场景下。gzip是 GNU 项目开发的一款压缩工具以其高效的压缩算法和广泛兼容性著称。与zip或rar不同gzip专门用于单个文件的压缩通常配合tar使用来打包和压缩目录。本文将深入剖析gzip的原理并提供可运行的代码示例帮助你全面掌握其用法。## gzip 压缩原理gzip基于 DEFLATE 压缩算法该算法结合了 LZ77 算法和 Huffman 编码。LZ77 通过查找重复的字符串并用指针替换来减少数据冗余而 Huffman 编码则根据字符出现频率分配可变长度编码进一步压缩数据。具体过程如下1.LZ77 阶段扫描输入数据维护一个滑动窗口。当发现重复的子串时用距离长度对替换。2.Huffman 阶段对 LZ77 输出的字面值和指针进行统计构建 Huffman 树生成最优编码表。3.输出将压缩后的数据和编码表打包成.gz格式文件。这种两阶段设计使得gzip在压缩比和速度之间取得了良好的平衡。相比bzip2或xzgzip速度更快但压缩比略低适用于日常文件压缩需求。## 基本用法gzip的基本语法如下bashgzip [选项] 文件名默认情况下gzip会压缩指定文件生成.gz后缀的文件并删除原文件。常用选项包括--d或--decompress解压缩。--k或--keep保留原文件。--v或--verbose显示压缩详情。--r或--recursive递归压缩目录中的文件。--1到-9指定压缩级别-1最快但压缩比最低-9最慢但压缩比最高默认-6。### 示例 1压缩单个文件创建一个测试文件然后使用gzip压缩bash# 创建测试文件echo Hello, Linux gzip! This is a demonstration of compression. test.txt# 压缩文件默认级别gzip test.txt# 查看结果ls -lh执行后test.txt被替换为test.txt.gz。使用-v选项可以查看压缩前后的文件大小bashgzip -v test.txt输出类似test.txt: 72.1% -- replaced with test.txt.gz### 示例 2解压缩文件解压缩test.txt.gz并保留原压缩文件bash# 解压缩保留原文件gzip -d -k test.txt.gz# 验证文件内容cat test.txt输出Hello, Linux gzip! This is a demonstration of compression.## 进阶用法### 结合 tar 打包目录由于gzip只能压缩单个文件处理目录时需要先使用tar打包再压缩。这通常通过-z选项一步完成bash# 创建测试目录和文件mkdir testdirecho File 1 testdir/file1.txtecho File 2 testdir/file2.txt# 打包并压缩tar -czf archive.tar.gz testdir/# 解压并解包tar -xzf archive.tar.gz-c 表示创建归档-z 表示通过 gzip 压缩-f 指定文件名。解压缩时-x 表示提取。### 压缩级别调优在不同场景下选择合适的压缩级别至关重要。以下是一个 Python 脚本用于测试不同级别的压缩效果python#!/usr/bin/env python3““测试 gzip 不同压缩级别对文件大小和速度的影响。””“import subprocessimport timedef test_gzip_level(file_path, level): “”“测试指定压缩级别”” # 复制文件以避免覆盖 src file_path dst f{file_path}.level{level} subprocess.run([“cp”, src, dst], checkTrue) # 压缩 start time.time() subprocess.run([“gzip”, f-{level}“, “-k”, dst], checkTrue) elapsed time.time() - start # 获取压缩后文件大小 compressed f”{dst}.gz result subprocess.run([“ls”, “-lh”, compressed], capture_outputTrue, textTrue) size result.stdout.split()[4] # 清理 subprocess.run([“rm”, dst, compressed], checkTrue) return size, elapsed# 创建测试文件约 10MB 随机数据test_file “test_data.binsubprocess.run([“dd”, “if/dev/urandom”, fof{test_file}”, “bs1M”, “count10”], checkTrue)print(“级别 | 压缩后大小 | 耗时(秒)”)print(“-----|------------|---------”)for level in range(1, 10): size, elapsed test_gzip_level(test_file, level) print(f {level} | {size:10} | {elapsed:.3f})# 清理测试文件subprocess.run([“rm”, test_file], checkTrue)运行该脚本需要 Python 3 和 dd 命令将输出类似级别 | 压缩后大小 | 耗时(秒)-----|------------|--------- 1 | 10M | 0.123 2 | 9.8M | 0.145 … 9 | 9.5M | 0.567从结果可以看出级别越高压缩比越高但耗时也越长。实际应用中-6默认通常提供了较好的平衡。## 高级技巧### 管道压缩gzip 支持从标准输入读取数据方便与其他命令配合bash# 压缩命令输出tar -cf - mydir/ | gzip -c backup.tar.gz# 解压缩并直接处理zcat backup.tar.gz | tar -xf --c选项将结果写入标准输出避免创建中间文件。### 查看压缩文件内容无需解压缩即可查看内容bash# 查看文本文件内容zcat file.txt.gz# 查看二进制文件内容十六进制zcat file.bin.gz | xxd | head### 多文件压缩与流处理虽然gzip不直接支持多文件但可以通过cat合并多个压缩流bash# 分别压缩多个文件gzip -c file1.txt file1.txt.gzgzip -c file2.txt file2.txt.gz# 合并压缩流不推荐因为无法单独解压cat file1.txt.gz file2.txt.gz combined.gz注意合并后的文件只能整体解压缩无法提取单个文件。## 性能考量与注意事项- **内存使用**gzip默认使用 32KB 窗口内存占用约 64KB适合嵌入式环境。- **兼容性**.gz格式广泛支持几乎所有操作系统都能处理。- **压缩比限制**对于已经压缩的文件如 JPEG、MP4gzip几乎无法进一步压缩甚至可能增大文件。- **错误处理**使用-t选项测试压缩文件完整性gzip -t file.gz。## 总结gzip是 Linux 生态中不可或缺的压缩工具其基于 DEFLATE 算法的设计兼顾了速度和压缩比。通过本文我们深入了解了其工作原理并学习了从基本压缩到高级管道操作的各种用法。关键要点包括- 默认压缩级别-6适合大多数场景。- 结合tar的-z选项可高效处理目录。- 使用-k保留原文件避免误删。- 对于已压缩数据考虑使用-1级别以节省时间。掌握gzip 不仅能提高日常工作效率还能在脚本和自动化任务中发挥重要作用。建议读者通过实际动手操作进一步巩固这些知识。

相关新闻

基于ESP32-CAM与HC-SR501的宠物感应拍照机DIY全攻略

基于ESP32-CAM与HC-SR501的宠物感应拍照机DIY全攻略

1. 从“铲屎官”的痛点到一个有趣的项目 养宠物的朋友,尤其是猫奴狗主们,大概都有过这样的经历:当你拿出手机,想记录下自家主子一个可爱、搞笑或者高冷的瞬间时,它要么立刻扭头走开,要么瞬间变成“表情包”…

2026/7/29 9:09:11阅读更多 →
从千问直接下单到全域信息抓取,淘系品牌该重新理解“搜索优化”了

从千问直接下单到全域信息抓取,淘系品牌该重新理解“搜索优化”了

当消费者开始在AI助手中描述需求并直接下单,一个由技术驱动的消费决策新周期已然开启。对于数百万淘系商家而言,理解并驾驭这一周期的关键,始于对一个核心概念的重新认识。想象这样一个场景:一位准新郎在“通义千问”中输入&#…

2026/7/29 9:07:11阅读更多 →
Java实现本地Socket通信(三)

Java实现本地Socket通信(三)

今天任务较少也较为简单本节任务账号登录(半成品)可视化界面一、账号登陆我们知道,账号输入操作是需要在客户端进行的,所以这里我们需要在客户端封装登陆方法login,在这里读取输入并传递给服务端账号信息public void l…

2026/7/29 9:07:11阅读更多 →
AI领域“无休止烧钱”的投资模式担忧情绪升温

AI领域“无休止烧钱”的投资模式担忧情绪升温

当地时间7月27日,苹果公司股价盘中创下历史新高,总市值逼近4.95万亿美元,一举反超英伟达,时隔一年多重新登顶全球市值第一的宝座。与此同时,AI芯片巨头英伟达却遭遇重挫,单日市值大幅缩水约2500亿美元&…

2026/7/29 10:37:32阅读更多 →
Vivado实现阶段拥塞难题:诊断、优化与实战解决策略

Vivado实现阶段拥塞难题:诊断、优化与实战解决策略

1. 项目概述:直面Vivado实现阶段的“拥堵”难题在FPGA设计流程中,Vivado的Implementation(实现)阶段,尤其是Place & Route(布局布线)环节,常常是项目从逻辑构想走向物理实现的“…

2026/7/29 10:37:32阅读更多 →
STM32双机串口通信实战:从硬件连接到自定义协议设计

STM32双机串口通信实战:从硬件连接到自定义协议设计

1. 项目缘起:从单打独斗到协同作战在嵌入式开发中,我们常常会遇到一个场景:一个STM32板子不够用。可能是功能模块太多,一个MCU的引脚资源或计算能力捉襟见肘;也可能是为了模块化设计,将传感器采集、核心逻辑…

2026/7/29 10:37:32阅读更多 →
深入解析以太网交换芯片ALE:端口镜像、链路聚合与VLAN的硬件实现

深入解析以太网交换芯片ALE:端口镜像、链路聚合与VLAN的硬件实现

1. 项目概述与核心价值在数据中心、企业网乃至工业控制系统中,以太网交换机扮演着数据交通枢纽的角色。我们日常配置的VLAN隔离、端口镜像抓包、链路聚合提升带宽,这些高级功能的背后,是一套精密且复杂的硬件逻辑在支撑。很多人会用命令行配置…

2026/7/29 10:37:32阅读更多 →
Claude Code环境部署与CLI实战指南

Claude Code环境部署与CLI实战指南

1. Claude Code 环境部署全指南1.1 系统环境检查与准备在开始安装Claude Code之前,需要确保你的开发环境满足基本要求。我建议使用64位操作系统,无论是Windows 10/11、macOS 10.15还是主流Linux发行版(如Ubuntu 20.04)都能良好支持…

2026/7/29 10:37:32阅读更多 →
小红书下载器终极指南:如何一键批量下载无水印图文视频

小红书下载器终极指南:如何一键批量下载无水印图文视频

小红书下载器终极指南:如何一键批量下载无水印图文视频 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&am…

2026/7/29 10:35:31阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →