学习目标
- 理解本节涉及的核心主题:Linux 基本命令、文件压缩与解压、
zip- 创建压缩文件、unzip- 解压缩 ZIP 文件。 - 掌握重点命令或工具:
zip、unzip、gzip、bzip2。 - 能够结合示例完成常见操作,并理解关键参数、使用场景与结果差异。
- 能够识别本节相关的常见风险、易错点或排查思路。
学习重点
- 主题范围:Linux 基本命令、文件压缩与解压、
zip- 创建压缩文件、unzip- 解压缩 ZIP 文件、gzip- 压缩文件、bzip2- 高效压缩工具 - 重点命令:
zip、unzip、gzip、bzip2 - 学习重点:命令用途、关键参数、典型场景、与相近命令的区别
- 复习方式:先理解场景,再动手练习,最后对照结果检查
Linux 基本命令
文件压缩与解压
zip - 创建压缩文件
zip 是一种广泛使用的压缩格式,支持压缩多个文件和目录,并提供密码保护功能。
基本用法
命令语法:
zip [选项] 压缩包名 文件/目录...
示例: 将 report.docx 和 summary.txt 压缩为 documents.zip。
zip documents.zip /home/user/documents/report.docx /home/user/documents/summary.txt
输出示例:
adding: /home/user/documents/report.docx (stored 0%)
adding: /home/user/documents/summary.txt (stored 0%)
压缩多个文件与目录
示例场景: 将整个 projects 目录及其子目录压缩为 projects.zip。
zip -r projects.zip /home/user/projects
解释:
-r:递归压缩目录及其子目录。projects.zip:目标压缩包名称。/home/user/projects:要压缩的目录。
输出示例:
adding: /home/user/projects/project_alpha/ (stored 0%)
adding: /home/user/projects/project_alpha/main.py (deflated 60%)
adding: /home/user/projects/project_alpha/utils.py (deflated 55%)
adding: /home/user/projects/project_alpha/README.md (deflated 50%)
adding: /home/user/projects/project_beta/ (stored 0%)
adding: /home/user/projects/project_beta/app.js (deflated 65%)
adding: /home/user/projects/project_beta/index.html (deflated 70%)
adding: /home/user/projects/project_beta/styles.css (deflated 75%)
常用选项(如 -r, -e)
-r:递归压缩目录及其子目录。-e:启用密码保护,需要在命令执行后输入密码。-q:静默模式,减少输出信息。-9:最高压缩级别。
示例 1:创建带密码保护的压缩包
zip -e secure_backup.zip /home/user/documents/summary.txt /home/user/documents/data.csv
操作过程:
系统会提示输入并确认密码。
示例 2:使用最高压缩级别压缩文件
zip -9 optimized.zip /home/user/downloads/movie.mkv
示例 3:静默压缩
zip -rq silent_backup.zip /home/user/logs
输出示例:
无输出,压缩过程在后台进行。
示例操作
示例 1:压缩 logs 目录并启用密码保护
zip -re logs_backup.zip /home/user/logs
操作过程:
系统提示输入密码并确认:
Enter password:
Verify password:
输出示例:
adding: /home/user/logs/system.log (deflated 40%)
adding: /home/user/logs/error.log (deflated 50%)
adding: /home/user/logs/access.log (deflated 35%)
示例 2:压缩多个文件和目录
zip -r full_backup.zip /home/user/documents /home/user/projects /home/user/logs
输出示例:
adding: /home/user/documents/ (stored 0%)
adding: /home/user/documents/report.docx (deflated 20%)
adding: /home/user/documents/summary.txt (deflated 15%)
adding: /home/user/documents/data.csv (deflated 25%)
adding: /home/user/documents/old_reports/ (stored 0%)
adding: /home/user/documents/old_reports/report_2020.docx (deflated 18%)
adding: /home/user/documents/old_reports/report_2021.docx (deflated 22%)
adding: /home/user/projects/ (stored 0%)
adding: /home/user/projects/project_alpha/ (stored 0%)
adding: /home/user/projects/project_alpha/main.py (deflated 30%)
adding: /home/user/projects/project_alpha/utils.py (deflated 28%)
adding: /home/user/projects/project_alpha/README.md (deflated 35%)
adding: /home/user/projects/project_beta/ (stored 0%)
adding: /home/user/projects/project_beta/app.js (deflated 32%)
adding: /home/user/projects/project_beta/index.html (deflated 40%)
adding: /home/user/projects/project_beta/styles.css (deflated 45%)
adding: /home/user/logs/ (stored 0%)
adding: /home/user/logs/system.log (deflated 40%)
adding: /home/user/logs/error.log (deflated 50%)
adding: /home/user/logs/access.log (deflated 35%)
unzip - 解压缩 ZIP 文件
unzip 是用于解压缩 .zip 文件的工具,支持解压整个压缩包或其中的部分文件。
基本用法
命令语法:
unzip [选项] 压缩包名
示例: 解压 documents.zip 到当前目录。
unzip documents.zip
输出示例:
Archive: documents.zip
inflating: report.docx
inflating: summary.txt
常用选项(如 -d, -l)
-d:指定解压缩到的目标目录。-l:列出压缩包内容而不解压。-o:覆盖现有文件而不提示。-n:不覆盖现有文件,跳过。-j:解压缩时不保留目录结构。
示例 1:将压缩包解压到指定目录
unzip projects.zip -d /home/user/restore_projects
输出示例:
Archive: projects.zip
creating: /home/user/restore_projects/projects/
creating: /home/user/restore_projects/projects/project_alpha/
inflating: /home/user/restore_projects/projects/project_alpha/main.py
inflating: /home/user/restore_projects/projects/project_alpha/utils.py
inflating: /home/user/restore_projects/projects/project_alpha/README.md
creating: /home/user/restore_projects/projects/project_beta/
inflating: /home/user/restore_projects/projects/project_beta/app.js
inflating: /home/user/restore_projects/projects/project_beta/index.html
inflating: /home/user/restore_projects/projects/project_beta/styles.css
示例 2:列出压缩包内容
unzip -l full_backup.zip
输出示例:
Archive: full_backup.zip
Length Date Time Name
--------- ---------- ----- ----
1024 2024-04-27 10:00 documents/report.docx
512 2024-04-27 10:01 documents/summary.txt
2048 2024-04-27 10:02 documents/data.csv
1024 2024-04-27 10:03 documents/old_reports/report_2020.docx
1024 2024-04-27 10:04 documents/old_reports/report_2021.docx
4096 2024-04-27 10:05 projects/project_alpha/main.py
4096 2024-04-27 10:06 projects/project_alpha/utils.py
256 2024-04-27 10:07 projects/project_alpha/README.md
4096 2024-04-27 10:08 projects/project_beta/app.js
2048 2024-04-27 10:09 projects/project_beta/index.html
1024 2024-04-27 10:10 projects/project_beta/styles.css
--------- -------
15360 12 files
解压部分文件
示例场景: 仅解压 README.md 文件。
unzip projects.zip projects/project_alpha/README.md -d /home/user/restore_projects
输出示例:
inflating: /home/user/restore_projects/projects/project_alpha/README.md
解释:
- 仅解压指定的
README.md文件到目标目录。
示例操作
示例 1:解压带密码保护的压缩包
假设 secure_backup.zip 使用密码保护。
unzip secure_backup.zip
操作过程:
系统提示输入密码:
Archive: secure_backup.zip
[secure_backup.zip] documents/summary.txt password:
输入正确密码后,开始解压。
示例 2:解压时覆盖现有文件
unzip -o documents.zip
解释:
-o:覆盖现有文件而不提示。
输出示例:
inflating: report.docx
inflating: summary.txt
示例 3:解压时不保留目录结构
假设压缩包中包含多个目录结构,但只希望将所有文件解压到单一目录。
unzip -j archive.zip -d /home/user/flat_directory
解释:
-j:不保留目录结构。-d /home/user/flat_directory:指定目标目录。
输出示例:
inflating: report.docx
inflating: summary.txt
inflating: data.csv
inflating: report_2020.docx
inflating: report_2021.docx
所有文件将被解压到 /home/user/flat_directory,不包含原有的目录层次。
gzip - 压缩文件
gzip 是一个常用的文件压缩工具,适用于压缩单个文件,通常与 tar 结合使用以压缩整个目录。
基本用法
命令语法:
gzip [选项] [文件...]
示例: 压缩单个文件 summary.txt。
gzip /home/user/documents/summary.txt
操作结果:
summary.txt被压缩为summary.txt.gz。- 原文件
summary.txt被删除(除非使用保留选项)。
压缩与解压缩
压缩文件:
gzip /home/user/documents/data.csv
输出:
- 生成
data.csv.gz。 - 删除原文件
data.csv。
保留原文件:
使用 -k 选项保留原文件。
gzip -k /home/user/documents/data.csv
解压缩文件:
gzip -d /home/user/documents/data.csv.gz
或使用 gunzip 命令:
gunzip /home/user/documents/data.csv.gz
输出:
- 恢复
data.csv。 - 删除压缩文件
data.csv.gz。
常用选项(如 -d, -k)
-d:解压缩文件。-k:保留原文件。-c:将输出写到标准输出,不删除原文件。-r:递归处理目录中的文件。
示例 1:递归压缩 projects 目录中的所有 .txt 文件
gzip -r /home/user/projects/*.txt
解释:
-r:递归处理目录中的文件。- 此命令将压缩所有
.txt文件为.txt.gz。
示例 2:将 report.docx 压缩并保留原文件
gzip -k /home/user/documents/report.docx
输出:
- 生成
report.docx.gz。 - 保留原文件
report.docx。
示例操作
示例 1:压缩 logs 目录中的所有日志文件
gzip /home/user/logs/*.log
操作结果:
- 生成
system.log.gz、error.log.gz和access.log.gz。 - 删除原文件
system.log、error.log和access.log。
示例 2:解压缩 data.csv.gz 并保留压缩文件
gzip -dk /home/user/documents/data.csv.gz
输出:
- 恢复
data.csv。 - 保留压缩文件
data.csv.gz。
bzip2 - 高效压缩工具
bzip2 是一种高效的压缩工具,相比 gzip,它通常能提供更高的压缩比,但压缩和解压速度较慢。
基本用法
命令语法:
bzip2 [选项] [文件...]
示例: 压缩文件 data.csv。
bzip2 /home/user/documents/data.csv
操作结果:
- 生成
data.csv.bz2。 - 删除原文件
data.csv。
压缩与解压缩
压缩文件:
bzip2 /home/user/documents/report.docx
输出:
- 生成
report.docx.bz2。 - 删除原文件
report.docx。
保留原文件:
使用 -k 选项保留原文件。
bzip2 -k /home/user/documents/report.docx
解压缩文件:
bzip2 -d /home/user/documents/report.docx.bz2
或使用 bunzip2 命令:
bunzip2 /home/user/documents/report.docx.bz2
输出:
- 恢复
report.docx。 - 删除压缩文件
report.docx.bz2。
优缺点比较
优点:
- 更高的压缩比:相比
gzip,bzip2能提供更小的压缩文件,适合需要最大限度压缩的场景。 - 适用于大型文件:对于需要长时间存储的大型文件,
bzip2更为高效。
缺点:
- 较慢的压缩和解压速度:相比
gzip,bzip2的速度较慢,可能不适合需要快速处理的场景。 - 较高的资源消耗:在压缩和解压过程中,占用更多的内存和 CPU 资源。
示例对比:
压缩同一文件使用 gzip 和 bzip2 的大小比较。
gzip -c /home/user/documents/data.csv > data.csv.gz
bzip2 -c /home/user/documents/data.csv > data.csv.bz2
检查文件大小:
ls -lh data.csv.gz data.csv.bz2
输出示例:
-rw-r--r-- 1 user user 1.2M Apr 27 10:00 data.csv.gz
-rw-r--r-- 1 user user 900K Apr 27 10:01 data.csv.bz2
bzip2 提供了更小的压缩文件,但压缩时间更长。
示例操作
示例 1:压缩 projects 目录中的所有 .docx 文件
bzip2 /home/user/documents/*.docx
操作结果:
- 生成
report.docx.bz2、report_2020.docx.bz2和report_2021.docx.bz2。 - 删除原文件
report.docx、report_2020.docx和report_2021.docx。
示例 2:解压缩 report.docx.bz2 并保留压缩文件
bzip2 -dk /home/user/documents/report.docx.bz2
输出:
- 恢复
report.docx。 - 保留压缩文件
report.docx.bz2。
zip - 创建压缩文件
zip 是一种广泛使用的压缩格式,支持压缩多个文件和目录,并提供密码保护功能。
基本用法
命令语法:
zip [选项] 压缩包名 文件/目录...
示例: 将 report.docx 和 summary.txt 压缩为 documents.zip。
zip documents.zip /home/user/documents/report.docx /home/user/documents/summary.txt
输出示例:
adding: /home/user/documents/report.docx (stored 0%)
adding: /home/user/documents/summary.txt (stored 0%)
压缩多个文件与目录
示例场景: 将整个 projects 目录及其子目录压缩为 projects.zip。
zip -r projects.zip /home/user/projects
解释:
-r:递归压缩目录及其子目录。projects.zip:目标压缩包名称。/home/user/projects:要压缩的目录。
输出示例:
adding: /home/user/projects/project_alpha/ (stored 0%)
adding: /home/user/projects/project_alpha/main.py (deflated 60%)
adding: /home/user/projects/project_alpha/utils.py (deflated 55%)
adding: /home/user/projects/project_alpha/README.md (deflated 50%)
adding: /home/user/projects/project_beta/ (stored 0%)
adding: /home/user/projects/project_beta/app.js (deflated 65%)
adding: /home/user/projects/project_beta/index.html (deflated 70%)
adding: /home/user/projects/project_beta/styles.css (deflated 75%)
常用选项(如 -r, -e)
-r:递归压缩目录及其子目录。-e:启用密码保护,需要在命令执行后输入密码。-9:最高压缩级别。-q:静默模式,减少输出信息.
示例 1:创建带密码保护的压缩包
zip -e secure_backup.zip /home/user/documents/summary.txt /home/user/documents/data.csv
操作过程:
系统会提示输入并确认密码。
示例 2:使用最高压缩级别压缩文件
zip -9 optimized.zip /home/user/downloads/movie.mkv
示例 3:静默压缩
zip -rq silent_backup.zip /home/user/logs
输出示例:
无输出,压缩过程在后台进行。
示例操作
示例 1:压缩 logs 目录并启用密码保护
zip -re logs_backup.zip /home/user/logs
操作过程:
系统提示输入密码并确认:
Enter password:
Verify password:
输出示例:
adding: /home/user/logs/system.log (deflated 40%)
adding: /home/user/logs/error.log (deflated 50%)
adding: /home/user/logs/access.log (deflated 35%)
示例 2:压缩多个文件和目录
zip -r full_backup.zip /home/user/documents /home/user/projects /home/user/logs
输出示例:
adding: /home/user/documents/ (stored 0%)
adding: /home/user/documents/report.docx (deflated 20%)
adding: /home/user/documents/summary.txt (deflated 15%)
adding: /home/user/documents/data.csv (deflated 25%)
adding: /home/user/documents/old_reports/ (stored 0%)
adding: /home/user/documents/old_reports/report_2020.docx (deflated 18%)
adding: /home/user/documents/old_reports/report_2021.docx (deflated 22%)
adding: /home/user/projects/ (stored 0%)
adding: /home/user/projects/project_alpha/ (stored 0%)
adding: /home/user/projects/project_alpha/main.py (deflated 30%)
adding: /home/user/projects/project_alpha/utils.py (deflated 28%)
adding: /home/user/projects/project_alpha/README.md (deflated 35%)
adding: /home/user/projects/project_beta/ (stored 0%)
adding: /home/user/projects/project_beta/app.js (deflated 32%)
adding: /home/user/projects/project_beta/index.html (deflated 40%)
adding: /home/user/projects/project_beta/styles.css (deflated 45%)
adding: /home/user/logs/ (stored 0%)
adding: /home/user/logs/system.log (deflated 40%)
adding: /home/user/logs/error.log (deflated 50%)
adding: /home/user/logs/access.log (deflated 35%)
本节总结
- 本节主要围绕 Linux 基本命令、文件压缩与解压、
zip- 创建压缩文件、unzip- 解压缩 ZIP 文件、gzip- 压缩文件 展开。 - 需要重点掌握的命令或工具包括:
zip、unzip、gzip、bzip2。 - 学习时应优先抓住「命令解决什么问题、在什么场景下使用、执行后会产生什么结果」。
- 对涉及权限、覆盖、网络、系统服务、删除或安全配置的操作,建议先在测试环境练习。
复习建议
- 先用自己的话复述本节每个主题或命令的作用,避免只记参数不懂用途。
- 按原文示例至少手敲一遍典型命令,并观察输出变化。
- 对高风险操作先确认路径、权限和目标对象,再执行实际命令。
- 可优先复习这些高频命令:
zip、unzip、gzip、bzip2。