如需学习视频,请查看本头条号简介,免费在线观看学习视频
1. 前言
通常情况下,linux系统并不会产生zip文件,而是由用户把zip文件上传到Linux系统中,产生解压的需求。
2. 安装zip解压工具unzip
以CentOS7.5最小化安装为例,系统并没有集成unzip工具,需要额外安装
[root@zcwyou ~]# yum -y install unzip
看到以下输出即代表安装成功。
Running transaction
Installing : unzip-6.0-19.el7.x86_64 1/1
Verifying : unzip-6.0-19.el7.x86_64 1/1
Installed:
unzip.x86_64 0:6.0-19.el7
Complete!
linux安装unzip
3. 解压文件
先查看一下压缩文件
[root@zcwyou zip]# ll *.zip
查询结果如下
total 4
-rw-r--r--. 1 root root 3032 Dec 4 17:14 zcwyou.zip
解压这个zcwyou.zip文件
[root@zcwyou zip]# unzip zcwyou.zip
执行过程如下:
Archive: test.zip
inflating: 333.txt
extracting: abc.txt
inflating: cisco1.txt
inflating: cisco2.txt
extracting: compress.txt
extracting: cp1.txt
extracting: cp2.txt
inflating: cut2.txt
extracting: cut.txt
extracting: diff1.txt
extracting: diff2.txt
creating: dir123/
extracting: hard123.txt
extracting: hard.txt
extracting: linux123.txt
extracting: soft.txt
extracting: test.txt
linux使用unzip解压zip文件
可以看到,unzip程序创建了一个目录dir123/,并且解压了一些文件。目录dir123是压缩文件里的一个目录。
检查:
[root@zcwyou zip]# ll
total 40
-rw-r--r--. 1 root root 315 Nov 27 16:15 333.txt
-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt
-rw-r--r--. 1 root root 173 Oct 13 15:24 cisco1.txt
-rw-r--r--. 1 root root 179 Oct 13 15:24 cisco2.txt
-rw-r--r--. 1 root root 0 Oct 12 14:40 compress.txt
-rw-r--r--. 1 root root 0 Oct 11 10:23 cp1.txt
-rw-r--r--. 1 root root 0 Oct 11 10:23 cp2.txt
-rw-r--r--. 1 root root 57 Oct 12 13:45 cut2.txt
-rw-r--r--. 1 root root 50 Oct 12 11:59 cut.txt
-rw-r--r--. 1 root root 9 Oct 13 14:59 diff1.txt
-rw-r--r--. 1 root root 18 Oct 13 15:00 diff2.txt
drwxr-xr-x. 2 root root 6 Dec 4 17:06 dir123
-rw-r--r--. 1 root root 0 Nov 26 17:47 hard123.txt
-rw-r--r--. 1 root root 0 Nov 26 17:47 hard.txt
-rw-r--r--. 1 root root 0 Nov 29 17:25 linux123.txt
-rw-r--r--. 1 root root 0 Nov 26 17:47 soft.txt
-rw-r--r--. 1 root root 10 Nov 19 13:33 test.txt
-rw-r--r--. 1 root root 3032 Dec 4 17:14 zcwyou.zip
发现zcwyou.zip里的文件已经被全部解压出来了,并且保留了源文件zcwyou.zip。
解压其它例子
检查linux解压的文件
4. 其它实用案例
4.1 把zcwyou.zip解压到目录/tmp
[root@zcwyou zip]# unzip -d /tmp zcwyou.zip
4.2 解压不覆盖原有文件
[root@zcwyou zip]# unzip -n zcwyou.zip
4.3 解压到指定目录不覆盖原有文件
[root@zcwyou zip]# unzip -n -d /tmp zcwyou.zip
4.4 解压到指定目录并覆盖原有文件
[root@zcwyou zip]# unzip -o zcwyou.zip -d /tmp/
4.5 列出压缩包内容
[root@zcwyou zip]# unzip -l zcwyou.zip
4.6 查看压缩包信息,包括每个文件的压缩率和总压缩率。
[root@zcwyou zip]# unzip -v zcwyou.zip
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
315 Defl:N 163 48% 11-27-2018 16:15 c785bec5 333.txt
9 Stored 9 0% 11-21-2018 11:39 b202eb3a abc.txt
173 Defl:X 120 31% 10-13-2018 15:24 ddc8760a cisco1.txt
179 Defl:X 121 32% 10-13-2018 15:24 c83f3111 cisco2.txt
0 Stored 0 0% 10-12-2018 14:40 00000000 compress.txt
0 Stored 0 0% 10-11-2018 10:23 00000000 cp1.txt
0 Stored 0 0% 10-11-2018 10:23 00000000 cp2.txt
57 Defl:X 40 30% 10-12-2018 13:45 cfaa04a8 cut2.txt
50 Stored 50 0% 10-12-2018 11:59 8bdf8936 cut.txt
9 Stored 9 0% 10-13-2018 14:59 d0864923 diff1.txt
18 Stored 18 0% 10-13-2018 15:00 12be2d98 diff2.txt
0 Stored 0 0% 12-04-2018 17:06 00000000 dir123/
0 Stored 0 0% 11-26-2018 17:47 00000000 hard123.txt
0 Stored 0 0% 11-26-2018 17:47 00000000 hard.txt
0 Stored 0 0% 11-29-2018 17:25 00000000 linux123.txt
0 Stored 0 0% 11-26-2018 17:47 00000000 soft.txt
10 Stored 10 0% 11-19-2018 13:33 769b1926 test.txt
820 540 34% 17 files
linux unzip查看压缩包信息
4.7 测试压缩文件
[root@zcwyou zip]# unzip -t zcwyou.zip
检验结果如下:
Archive: test.zip
testing: 333.txt OK
testing: abc.txt OK
testing: cisco1.txt OK
testing: cisco2.txt OK
testing: compress.txt OK
testing: cp1.txt OK
testing: cp2.txt OK
testing: cut2.txt OK
testing: cut.txt OK
testing: diff1.txt OK
testing: diff2.txt OK
testing: dir123/ OK
testing: hard123.txt OK
testing: hard.txt OK
testing: linux123.txt OK
testing: soft.txt OK
testing: test.txt OK
No errors detected in compressed data of test.zip.
linux使用unzip测试压缩包
5. unzip命令的其他选项
[root@zcwyou zip]# unzip -h
-p 解压文件到重定向到pipe,但不显示信息
-l 列出压缩包里所有的文件
-f 更新压缩包内已有的文件,但不添加新文件
-t 测试压缩包
-u 更新压缩包内已有的文件,并添加新文件
-z 仅显示压缩包文件的备注信息
-v 打印详细的执行过程。
-T 解压时更新文件时间至解压时间
-x 指定解压哪些文件
-d 解压时创建新的目录
修改参数:
-n 不覆盖文件
-q 静默模式
-o 静默替换
-a 自动转换文本文件
-j 不处理压缩文件中原有的目录
-aa 把所有文件当做文本文件
-U use escapes for all non-ASCII Unicode
-UU 忽略任何的Unicode字段
-C 压缩文件时区分大小写
-L 把压缩文件里的文件名全部变为小定
-X 存储UID/GID信息
-V 保留VMS版本号
-K 保留setuid/setgid/tacky权限
-M 把输出结果交由more打印
-O 指定字符编码为 DOS,Windows 和 OS/2
-I 指定字符编码为 UNIX编码
总结:zip文件一般由Windows系统压缩,并上传到Linux系统上,Linux系统使用unzip解压缩,如果发生乱码,需要使用选项-O指定字符编码,比如GBK,GB18030.
点击了解更多,快速查看更多的技术文章列表。