unzip 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
unzip——压缩与归档命令族(见压缩、归档与备份命令族)。它是 zip 的解压端,处理.zip包的标准工具。
unzip 把 .zip 包解开到当前目录或指定位置,也能先"预览"内容、测试完整性,而不真正解压。
一、基本用法
bash
unzip app.zip # 解压到当前目录
unzip app.zip -d /opt/app # -d 解压到指定目录
unzip -l app.zip # -l 列出内容但不解压(先看看里面有什么)
unzip -t app.zip # -t 测试压缩包完整性(校验 CRC)解压前先用
-l看内容、用-t验完整性,是好习惯——避免解压出一堆散文件污染当前目录,或解压损坏的包白忙活。-d指定目标目录能保持环境整洁。
二、覆盖策略
bash
unzip -o app.zip # -o 覆盖已存在的文件,不询问
unzip -n app.zip # -n 不覆盖已存在文件(跳过)
unzip app.zip '*.txt' # 只解压匹配的文件(通配符需引号)默认 unzip 遇到同名文件会逐个问是否覆盖(交互麻烦)。脚本里用
-o(强制覆盖)或-n(只解新增)明确意图,避免卡在交互等待。还能用通配符只取部分文件。
三、中文乱码处理
bash
# 老 zip 包若文件名非 UTF-8 编码,解压出来中文会乱码
unzip -O GBK app.zip # -O 指定文件名编码(unzip 支持时)
# 不支持 -O 时,可换用 bsdtar / 7z 解压这是 unzip 最常见的坑:Windows 老工具打的包文件名可能是 GBK,Linux 默认按 UTF-8 解就乱码。部分 unzip 版本支持
-O指定原编码;不支持的话用 7z/bsdtar往往能自动识别。
四、unzip vs 其他解压
| 命令 | 处理格式 |
|---|---|
unzip | 仅 .zip |
tar -xf | .tar/.tar.gz/.tar.zst 等(见tar 命令详解) |
7z x | 几乎全格式(见7z 命令详解) |
格式决定工具:
.zip用 unzip,.tar.*用 tar,混合/未知格式用 7z。别拿 unzip 去解.tar.gz,会报错。
五、踩坑:解压出文件散落当前目录
bash
cd /tmp && unzip ~/app.zip # 先进临时目录再解,避免污染工作目录zip 包有时没顶层目录、解压后文件直接铺在当前目录,容易和已有文件混在一起。养成"先进空目录/用
-d指定"的习惯,解压完再整理。
六、实战:验证并解压到安全位置
bash
unzip -t app.zip && unzip -d /opt/app -o app.zip # 先校验通过再解压覆盖一句话总结
unzip = 解 .zip 包:-d 指定目录、-l 预览、-t 校验、-o/-n 控覆盖;遇到中文乱码试 -O GBK 或换 7z。只处理 zip——.tar.* 用 tar。它是 zip 的解压端。