马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
unzip 是什么
unzip 在 Linux 里用来解压 .zip 格式。ZIP 是目前最通用的无损压缩容器格式——一个 zip 文件本质是个数据容器,里面可以装一个或多个被压缩的文件或目录,需要时再解出来还原成原始字节。正因为通用,服务器上的源码包、安装包大部分都是 zip 封装。
一、先装 unzip
多数 Linux 发行版默认不带 unzip,先用包管理器装上:
# Ubuntu / Debian
sudo apt install unzip
# CentOS / Fedora / Rocky
sudo yum install unzip
# Arch
sudo pacman -S unzip
# openSUSE
sudo zypper install unzip
装完确认:unzip -v 能打印版本号就算好了。
二、基本语法
unzip [选项] zip_file
不带任何选项时,全部内容解到当前目录。这既是最常用也可能是最危险的用法——万一 zip 里是绝对路径或者在归档时带了多余层级,解压出来会直接覆盖当前目录的文件。
三、常用选项
| 选项 | 作用 |
-q | 安静模式,压制解压过程的消息输出 |
-d 目录路径 | 指定解压的目标目录 |
-P 密码 | zip 被密码保护时,用这个选项给密码 |
-o | 覆盖已存在的文件,不询问 |
-n | 不覆盖已存在的文件 |
-l | 只列出内容,不解压 |
-t | 只测试完整性,不解压 |
-u | 只解比目标文件新的文件(会覆盖旧的) |
-x 文件列表 | 排除指定的文件 |
-u 和 -n 正好相反:-u 是「目标已经存在但归档里更新就覆盖」,-n 是「目标存在就一律不动」。这两个别记混。
四、16 个实例
实例 1:解压到当前目录
unzip latest.zip
实例 2:解压到指定目录
unzip latest.zip -d /var/www
实例 3:解压加密 zip
unzip -P PasswOrd filename.zip
实例 4:覆盖已有文件
unzip -o latest.zip
实例 5:只看内容不解压
unzip -l latest.zip
实例 6:测试完整性
unzip -t latest.zip
实例 7:只取其中两个文件
unzip latest.zip file1.txt file2.txt
实例 8:指定文件的同时指定目录
unzip latest.zip file1.txt file2.txt -d /var/www
实例 9:全解压但排除两个文件
unzip latest.zip -x file1.txt file2.txt
实例 10:排除文件 + 指定目录
unzip latest.zip -x file1.txt file2.txt -d /var/www
实例 11:只解比目标新的(覆盖旧)
unzip -u latest.zip
实例 12:-u 加指定目录
unzip -u latest.zip -d /var/www
实例 13:目标不存在或比目标新才解(-n)
unzip -n latest.zip
实例 14:-n 加指定目录
unzip -n latest.zip -d /var/www
实例 15:-n 排除特定文件
unzip -n latest.zip -x file1.txt file2.txt
实例 16:-n 排除 + 指定目录(组合拳)
unzip -n latest.zip -x file1.txt file2.txt -d /var/www
五、注意事项
- unzip 不保留原属主:解出来的文件归「执行解压命令的那个用户」所有。用 root 解的服务端包,之后再让 www-data 写会有权限问题。
- 当前目录要有写权限:解压本质是写文件,目录不可写直接报 Permission denied。
- 别在命令行里裸敲密码:
-P 后面跟的密码会出现在 ps 输出和 shell 历史里,等于公开。更安全的做法是不加 -P,让 unzip 弹提示,从 stdin 输入。
- 路径穿越风险:不可信来源的 zip 可能含
../ 条目,用 unzip -o 直接解到当前目录有可能覆盖任意文件。生产环境建议先 unzip -l 看一眼结构,或用 7z x 的安全模式。
- 解压前先看包大小:磁盘快满时 zip 解压会把分区瞬间写爆,先
df -h。
六、相关命令对照
- zip:创建 zip 压缩包
- tar:处理 .tar(常配 gzip/xz 用
cvzf / xvzf)
- gzip / gunzip:压缩解压 .gz
- bzip2:压缩解压 .bz2
- xz:压缩解压 .xz,压缩率高但慢
- lzma:压缩解压 .lzma
- rar / unrar:处理 .rar(因专利授权限制,多数发行版仓库里没有,需自行装闭源包)
- 7z:处理 .7z,压缩率最优
服务端最常见的组合其实不是 zip 而是 tar.gz:tar -zxvf pkg.tar.gz。unzip 的主战场是那些「Windows 传上来、或者上游就是 zip 发布」的场景。
小结
记住四组就够了:输出位置用 -d,覆盖策略用 -o/-n/-u,过滤用 -x 排除或直写文件名,先验货用 -l 列表和 -t 测完整性。生产脚本里建议固定搭配 -q -o 加 -d,输出可预期,不会被交互提示卡住。
qidao123.com企服评测-应用市场 编辑提示 |