Linux命令之unzip

半世苍凉 提交于 2020-02-13 03:09:01

unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s)…] [-x xfile(s)…] [-d exdir]

unzip将列出、测试或从ZIP存档中提取文件,这些文件通常位于MS-DOS系统上。默认行为(就是没有选项)是从指定的ZIP存档中提取所有的文件到当前目录(及其下面的子目录)。一个配套程序zip(1L)创建ZIP存档;这两个程序都与PKWARE的PKZIP和PKUNZIP为MS-DOS创建的存档文件兼容,但许多情况下,程序选项或默认行为是不同的。

(1).参数

file[.zip] ZIP存档的路径。如果文件规范是通配符,则按操作系统(或文件系统)确定的顺序处理每个匹配的文件。只有文件名可以是通配符,路径本身不可以。通配符表达式类似于常用的Unix Shell(sh,ksh,csh)中支持的表达式,可能包含:

    * 匹配0个或更多字符的序列

    ? 匹配1个字符

    […] 匹配括号内的任何单个字符;范围由起始字符,连字符和结束字符指定。如果感叹号或插入符号(”!”或”^”)在左括号后面,则括号内的字符范围将被补充(即除括号内的字符之外的任何内容都被视为匹配)。要指定一个左括号,必须使用”[[]”

    (请务必引用可能由操作系统解释或修改的任何字符,特别是在UNIX和VMS下。)如果未找到匹配项,则假定规范是文本文件名;如果失败,则附加后缀.zip。注意,与其他任何ZIP存档一样,支持自解压ZIP文件;只要明确指定.exe后缀(如果有)。

[file(s)] 要处理的可选存档成员列表,以空格分隔。(使用VMSCLI定义编译的VMS版本必须使用逗号分隔文件。请参阅(2).选项中的-v选项)正则表达式(通配符)可用于匹配多个成员。同样,请务必引用可由操作系统扩展或修改的表达式

[-x xfile(s)] 要从处理中排除的可选存档成员列表。由于通配符通常匹配(’/’)目录分隔符(如有例外,请参阅-W选项),此选项可用于排除子目录中的所有文件。例如,”unzip foo *.[ch] -x */*”将提取主目录中所有C源文件,但不提取任何子目录中的所有C源文件。如果没有-x选项,将提取zip文件中的所有目录中的所有C源文件。

[-d exdir] 可提取文件的可选目录。默认情况下,在当前目录中重新创建所有文件和子目录;-d选项运行在任意目录中提取(总是假设有一个人有权写入目录)。这个选项不需要出现在命令行的末尾;它也接受在zipfile格式之前(使用常规选项),zipfile格式之后或文件与-x选项之间。选项和目录可以连接在一起,它们之间没有任何空格,但请注意,这可能会导致正常的shell行为被抑制。特别是Unix C shell将”-d ~”(代字号)扩展为用户主目录的名称,但”-d ~”被视为当前目录的文本子目录”~”。

(2).选项

注意:为了支持过时的硬件,解压缩的使用屏幕限制为22或23行,因此应该仅考虑基本解压缩语法的提醒,而不是所有可能标志的详尽列表。

-Z zipinfo(1L)模式。如果命令行上的第一个选项是-Z,则其余选项将被视为zipinfo(1L)选项。

-A  [OS/2,Unix DLL]打印DLL编程接口(API)的扩展帮助。

-c 将文件解压缩到标准输出/屏幕(”CRT”)此选项与-p选项类似,不同在于提取时打印每个文件的名称,允许使用-a选项,并且如果合适,将自动执行ASCII-EBCDIC转换。此选项未在解压缩用法屏幕中列出。

-f 刷新现有文件,即仅提取磁盘上已存在且比磁盘副本新的文件。在覆盖之前默认解压缩查询,但可以使用-o选项来禁止查询。请注意,在许多操作系统下,必须正确配置TZ(时区)环境变量才能使-f和-u正常工作(在Unix下,变量通常会自动设置)。造成这种情况的原因有点微妙,但与DOS格式的文件时间(总是本地时间)和Unix格式的时间(总是以GMT/UTC)之间的差异以及比较两者的必要性有关。典型的TZ值是”PST8PDT”(美国太平洋时间,对夏令时或夏令时自动调整)

-l 列出存档文件(短格式)。打印指定文件的名称、未压缩文件大小、修改时间和次数,以及指定的所有文件总数。如果在定义了OS2_EAS情况下编译了UnZip,则-l选项还会列出存储的OS/2扩展属性(EAs)和OS/2访问控制列表(ACL)的大小的列。此外,还会显示zipfile注释和单个文件注释(如果有)。如果文件是从单个案例文件系统(例如,旧的MS-DOS FAT文件系统)存档并且给出了-L选项,则文件名称将转换为小写并与插入符号(^)为前缀

-p 将文件提取到管道(标准输出)。除了将文件发送到标准输出外,文件总是以二进制格式提取,就像它们被存储一样(没有转换)。

-t 测试存档文件。此选项提取内存中的内个指定文件,并将扩展文件的CRC(循环冗余校验,一个增强的校验和)与原始文件的存储CRC值进行比较。

-T  [大多数操作系统]将存档上的时间戳设置为每个存档中最新文件的时间戳。这与zip的-go选项相对应,只是可以在zip文件上使用通配符(例如,’unzip -T \*.zip’),而且速度更快

-u 更新现有文件并根据需要创建新文件。此选项执行与-f选项相同的功能,通过查询提取在磁盘上具有相同名称但更新的文件,此外它还提取磁盘上没有的那些文件。有关正确设置时区信息,参考-f选项

-v 列出存档文件(详细格式)或显示版本信息。此选项现在既可以作为选项也可以作为修饰符。作为选项时,当指定zip文件而没有其他选项时,-v详细列出存档文件,包括基础的-l选项列出的信息,还包括压缩方法、压缩大小、压缩比和32位CRC。与大多数有竞争关系的工具不同,解压缩从压缩的大小编号中删除了另外12个加密条目的头字节。因此压缩大小和压缩数字比与条目的加密状态无关,并且显示正确的压缩性能。(zip文件条目的加密压缩数据流的完整大小有更详细的zipinfo报告。)当没有指定zip文件时(即”unzip -v”),打印版本信息。

-z 仅显示存档注释

(3).修饰符

-n 从不覆盖现有文件

-q 安静模式(-qq=>安静)

-o 在不提示的情况下覆盖文件

-a 自动转换任何文本文件

-j 垃圾路径(不生成目录)

-aa 将所有文件视为文本

-U 对所有非ASCII Unicode使用转义符

-UU 忽略任何Unicode字段

-C 不敏感匹配文件名大小写

-L 将某些名称改为小写

-X 还原UID/GID信息

-V 保留VMS版本号

-K 保留setuid/setgid/tacky权限

-M 应该是类似使用more分页(?)

-O CHARSET 指定DOS、Windows和OS/2存档的字符编码

-I CHARSET 为unix和其他存档指定字符编码

(4).实例

解压到当前目录下

[root@xuexi ~]# unzip grub.zip 
Archive:  grub.zip
   creating: boot/grub/
  inflating: boot/grub/splash.xpm.gz  

解压到指定目录下

[root@xuexi ~]# unzip grub.zip -d /opt/
Archive:  grub.zip
   creating: /opt/boot/grub/
  inflating: /opt/boot/grub/splash.xpm.gz  

(5).扩展

zip命令简单了解一下,Linux很少用到

zip命令压缩文件

[root@xuexi ~]# zip passwd.zip /etc/passwd
  adding: etc/passwd (deflated 61%)

zip命令压缩文件夹

[root@xuexi ~]# zip -r grub.zip /boot/grub
  adding: boot/grub/ (stored 0%)
  adding: boot/grub/splash.xpm.gz (deflated 87%)

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!