1UNZIP(1L) UNZIP(1L)
2
3
4
6 unzip - list, test and extract compressed files in a ZIP archive
7
9 unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...]
10 [-x xfile(s) ...] [-d exdir]
11
13 unzip will list, test, or extract files from a ZIP archive, commonly
14 found on MS-DOS systems. The default behavior (with no options) is to
15 extract into the current directory (and subdirectories below it) all
16 files from the specified ZIP archive. A companion program, zip(1L),
17 creates ZIP archives; both programs are compatible with archives cre‐
18 ated by PKWARE's PKZIP and PKUNZIP for MS-DOS, but in many cases the
19 program options or default behaviors differ.
20
22 file[.zip]
23 Path of the ZIP archive(s). If the file specification is a
24 wildcard, each matching file is processed in an order determined
25 by the operating system (or file system). Only the filename can
26 be a wildcard; the path itself cannot. Wildcard expressions are
27 similar to those supported in commonly used Unix shells (sh,
28 ksh, csh) and may contain:
29
30 * matches a sequence of 0 or more characters
31
32 ? matches exactly 1 character
33
34 [...] matches any single character found inside the brackets;
35 ranges are specified by a beginning character, a hyphen,
36 and an ending character. If an exclamation point or a
37 caret (`!' or `^') follows the left bracket, then the
38 range of characters within the brackets is complemented
39 (that is, anything except the characters inside the
40 brackets is considered a match). To specify a verbatim
41 left bracket, the three-character sequence ``[[]'' has to
42 be used.
43
44 (Be sure to quote any character that might otherwise be inter‐
45 preted or modified by the operating system, particularly under
46 Unix and VMS.) If no matches are found, the specification is
47 assumed to be a literal filename; and if that also fails, the
48 suffix .zip is appended. Note that self-extracting ZIP files
49 are supported, as with any other ZIP archive; just specify the
50 .exe suffix (if any) explicitly.
51
52 [file(s)]
53 An optional list of archive members to be processed, separated
54 by spaces. (VMS versions compiled with VMSCLI defined must
55 delimit files with commas instead. See -v in OPTIONS below.)
56 Regular expressions (wildcards) may be used to match multiple
57 members; see above. Again, be sure to quote expressions that
58 would otherwise be expanded or modified by the operating system.
59
60 [-x xfile(s)]
61 An optional list of archive members to be excluded from process‐
62 ing. Since wildcard characters normally match (`/') directory
63 separators (for exceptions see the option -W), this option may
64 be used to exclude any files that are in subdirectories. For
65 example, ``unzip foo *.[ch] -x */*'' would extract all C source
66 files in the main directory, but none in any subdirectories.
67 Without the -x option, all C source files in all directories
68 within the zipfile would be extracted.
69
70 [-d exdir]
71 An optional directory to which to extract files. By default,
72 all files and subdirectories are recreated in the current direc‐
73 tory; the -d option allows extraction in an arbitrary directory
74 (always assuming one has permission to write to the directory).
75 This option need not appear at the end of the command line; it
76 is also accepted before the zipfile specification (with the nor‐
77 mal options), immediately after the zipfile specification, or
78 between the file(s) and the -x option. The option and directory
79 may be concatenated without any white space between them, but
80 note that this may cause normal shell behavior to be suppressed.
81 In particular, ``-d ~'' (tilde) is expanded by Unix C shells
82 into the name of the user's home directory, but ``-d~'' is
83 treated as a literal subdirectory ``~'' of the current direc‐
84 tory.
85
87 Note that, in order to support obsolescent hardware, unzip's usage
88 screen is limited to 22 or 23 lines and should therefore be considered
89 only a reminder of the basic unzip syntax rather than an exhaustive
90 list of all possible flags. The exhaustive list follows:
91
92 -Z [22mzipinfo(1L) mode. If the first option on the command line is
93 -Z, the remaining options are taken to be zipinfo(1L) options.
94 See the appropriate manual page for a description of these
95 options.
96
97 -A [OS/2, Unix DLL] print extended help for the DLL's programming
98 interface (API).
99
100 -c extract files to stdout/screen (``CRT''). This option is simi‐
101 lar to the -p option except that the name of each file is
102 printed as it is extracted, the -a option is allowed, and ASCII-
103 EBCDIC conversion is automatically performed if appropriate.
104 This option is not listed in the unzip usage screen.
105
106 -f freshen existing files, i.e., extract only those files that
107 already exist on disk and that are newer than the disk copies.
108 By default unzip queries before overwriting, but the -o option
109 may be used to suppress the queries. Note that under many oper‐
110 ating systems, the TZ (timezone) environment variable must be
111 set correctly in order for -f and -u to work properly (under
112 Unix the variable is usually set automatically). The reasons
113 for this are somewhat subtle but have to do with the differences
114 between DOS-format file times (always local time) and Unix-for‐
115 mat times (always in GMT/UTC) and the necessity to compare the
116 two. A typical TZ value is ``PST8PDT'' (US Pacific time with
117 automatic adjustment for Daylight Savings Time or ``summer
118 time'').
119
120 -l list archive files (short format). The names, uncompressed file
121 sizes and modification dates and times of the specified files
122 are printed, along with totals for all files specified. If
123 UnZip was compiled with OS2_EAS defined, the -l option also
124 lists columns for the sizes of stored OS/2 extended attributes
125 (EAs) and OS/2 access control lists (ACLs). In addition, the
126 zipfile comment and individual file comments (if any) are dis‐
127 played. If a file was archived from a single-case file system
128 (for example, the old MS-DOS FAT file system) and the -L option
129 was given, the filename is converted to lowercase and is pre‐
130 fixed with a caret (^).
131
132 -p extract files to pipe (stdout). Nothing but the file data is
133 sent to stdout, and the files are always extracted in binary
134 format, just as they are stored (no conversions).
135
136 -t test archive files. This option extracts each specified file in
137 memory and compares the CRC (cyclic redundancy check, an
138 enhanced checksum) of the expanded file with the original file's
139 stored CRC value.
140
141 -T [most OSes] set the timestamp on the archive(s) to that of the
142 newest file in each one. This corresponds to zip's -go option
143 except that it can be used on wildcard zipfiles (e.g., ``unzip
144 -T \*.zip'') and is much faster.
145
146 -u update existing files and create new ones if needed. This
147 option performs the same function as the -f option, extracting
148 (with query) files that are newer than those with the same name
149 on disk, and in addition it extracts those files that do not
150 already exist on disk. See -f above for information on setting
151 the timezone properly.
152
153 -v list archive files (verbose format) or show diagnostic version
154 info. This option has evolved and now behaves as both an option
155 and a modifier. As an option it has two purposes: when a zip‐
156 file is specified with no other options, -v lists archive files
157 verbosely, adding to the basic -l info the compression method,
158 compressed size, compression ratio and 32-bit CRC. In contrast
159 to most of the competing utilities, unzip removes the 12 addi‐
160 tional header bytes of encrypted entries from the compressed
161 size numbers. Therefore, compressed size and compression ratio
162 figures are independent of the entry's encryption status and
163 show the correct compression performance. (The complete size of
164 the encrypted compressed data stream for zipfile entries is
165 reported by the more verbose zipinfo(1L) reports, see the sepa‐
166 rate manual.) When no zipfile is specified (that is, the com‐
167 plete command is simply ``unzip -v''), a diagnostic screen is
168 printed. In addition to the normal header with release date and
169 version, unzip lists the home Info-ZIP ftp site and where to
170 find a list of other ftp and non-ftp sites; the target operating
171 system for which it was compiled, as well as (possibly) the
172 hardware on which it was compiled, the compiler and version
173 used, and the compilation date; any special compilation options
174 that might affect the program's operation (see also DECRYPTION
175 below); and any options stored in environment variables that
176 might do the same (see ENVIRONMENT OPTIONS below). As a modi‐
177 fier it works in conjunction with other options (e.g., -t) to
178 produce more verbose or debugging output; this is not yet fully
179 implemented but will be in future releases.
180
181 -z display only the archive comment.
182
184 -a convert text files. Ordinarily all files are extracted exactly
185 as they are stored (as ``binary'' files). The -a option causes
186 files identified by zip as text files (those with the `t' label
187 in zipinfo listings, rather than `b') to be automatically
188 extracted as such, converting line endings, end-of-file charac‐
189 ters and the character set itself as necessary. (For example,
190 Unix files use line feeds (LFs) for end-of-line (EOL) and have
191 no end-of-file (EOF) marker; Macintoshes use carriage returns
192 (CRs) for EOLs; and most PC operating systems use CR+LF for EOLs
193 and control-Z for EOF. In addition, IBM mainframes and the
194 Michigan Terminal System use EBCDIC rather than the more common
195 ASCII character set, and NT supports Unicode.) Note that zip's
196 identification of text files is by no means perfect; some
197 ``text'' files may actually be binary and vice versa. unzip
198 therefore prints ``[text]'' or ``[binary]'' as a visual check
199 for each file it extracts when using the -a option. The -aa
200 option forces all files to be extracted as text, regardless of
201 the supposed file type. On VMS, see also -S.
202
203 -b [general] treat all files as binary (no text conversions). This
204 is a shortcut for ---a.
205
206 -b [Tandem] force the creation files with filecode type 180 ('C')
207 when extracting Zip entries marked as "text". (On Tandem, -a is
208 enabled by default, see above).
209
210 -b [VMS] auto-convert binary files (see -a above) to fixed-length,
211 512-byte record format. Doubling the option (-bb) forces all
212 files to be extracted in this format. When extracting to stan‐
213 dard output (-c or -p option in effect), the default conversion
214 of text record delimiters is disabled for binary (-b) resp. all
215 (-bb) files.
216
217 -B [when compiled with UNIXBACKUP defined] save a backup copy of
218 each overwritten file. The backup file is gets the name of the
219 target file with a tilde and optionally a unique sequence number
220 (up to 5 digits) appended. The sequence number is applied when‐
221 ever another file with the original name plus tilde already
222 exists. When used together with the "overwrite all" option -o,
223 numbered backup files are never created. In this case, all
224 backup files are named as the original file with an appended
225 tilde, existing backup files are deleted without notice. This
226 feature works similarly to the default behavior of emacs(1) in
227 many locations.
228
229 Example: the old copy of ``foo'' is renamed to ``foo~''.
230
231 Warning: Users should be aware that the -B option does not pre‐
232 vent loss of existing data under all circumstances. For exam‐
233 ple, when unzip is run in overwrite-all mode, an existing
234 ``foo~'' file is deleted before unzip attempts to rename ``foo''
235 to ``foo~''. When this rename attempt fails (because of a file
236 locks, insufficient privileges, or ...), the extraction of
237 ``foo~'' gets cancelled, but the old backup file is already
238 lost. A similar scenario takes place when the sequence number
239 range for numbered backup files gets exhausted (99999, or 65535
240 for 16-bit systems). In this case, the backup file with the
241 maximum sequence number is deleted and replaced by the new
242 backup version without notice.
243
244 -C use case-insensitive matching for the selection of archive
245 entries from the command-line list of extract selection pat‐
246 terns. unzip's philosophy is ``you get what you ask for'' (this
247 is also responsible for the -L/-U change; see the relevant
248 options below). Because some file systems are fully case-sensi‐
249 tive (notably those under the Unix operating system) and because
250 both ZIP archives and unzip itself are portable across plat‐
251 forms, unzip's default behavior is to match both wildcard and
252 literal filenames case-sensitively. That is, specifying ``make‐
253 file'' on the command line will only match ``makefile'' in the
254 archive, not ``Makefile'' or ``MAKEFILE'' (and similarly for
255 wildcard specifications). Since this does not correspond to the
256 behavior of many other operating/file systems (for example, OS/2
257 HPFS, which preserves mixed case but is not sensitive to it),
258 the -C option may be used to force all filename matches to be
259 case-insensitive. In the example above, all three files would
260 then match ``makefile'' (or ``make*'', or similar). The -C
261 option affects file specs in both the normal file list and the
262 excluded-file list (xlist).
263
264 Please note that the -C option does neither affect the search
265 for the zipfile(s) nor the matching of archive entries to exist‐
266 ing files on the extraction path. On a case-sensitive file sys‐
267 tem, unzip will never try to overwrite a file ``FOO'' when
268 extracting an entry ``foo''!
269
270 -D skip restoration of timestamps for extracted items. Normally,
271 unzip tries to restore all meta-information for extracted items
272 that are supplied in the Zip archive (and do not require privi‐
273 leges or impose a security risk). By specifying -D, unzip is
274 told to suppress restoration of timestamps for directories
275 explicitly created from Zip archive entries. This option only
276 applies to ports that support setting timestamps for directories
277 (currently ATheOS, BeOS, MacOS, OS/2, Unix, VMS, Win32, for
278 other unzip ports, -D has no effect). The duplicated option -DD
279 forces suppression of timestamp restoration for all extracted
280 entries (files and directories). This option results in setting
281 the timestamps for all extracted entries to the current time.
282
283 On VMS, the default setting for this option is -D for consis‐
284 tency with the behaviour of BACKUP: file timestamps are
285 restored, timestamps of extracted directories are left at the
286 current time. To enable restoration of directory timestamps,
287 the negated option --D should be specified. On VMS, the option
288 -D disables timestamp restoration for all extracted Zip archive
289 items. (Here, a single -D on the command line combines with the
290 default -D to do what an explicit -DD does on other systems.)
291
292 -E [MacOS only] display contents of MacOS extra field during
293 restore operation.
294
295 -F [Acorn only] suppress removal of NFS filetype extension from
296 stored filenames.
297
298 -F [non-Acorn systems supporting long filenames with embedded com‐
299 mas, and only if compiled with ACORN_FTYPE_NFS defined] trans‐
300 late filetype information from ACORN RISC OS extra field blocks
301 into a NFS filetype extension and append it to the names of the
302 extracted files. (When the stored filename appears to already
303 have an appended NFS filetype extension, it is replaced by the
304 info from the extra field.)
305
306 -i [MacOS only] ignore filenames stored in MacOS extra fields.
307 Instead, the most compatible filename stored in the generic part
308 of the entry's header is used.
309
310 -j junk paths. The archive's directory structure is not recreated;
311 all files are deposited in the extraction directory (by default,
312 the current one).
313
314 -J [BeOS only] junk file attributes. The file's BeOS file
315 attributes are not restored, just the file's data.
316
317 -J [MacOS only] ignore MacOS extra fields. All Macintosh specific
318 info is skipped. Data-fork and resource-fork are restored as
319 separate files.
320
321 -K [AtheOS, BeOS, Unix only] retain SUID/SGID/Tacky file
322 attributes. Without this flag, these attribute bits are cleared
323 for security reasons.
324
325 -L convert to lowercase any filename originating on an uppercase-
326 only operating system or file system. (This was unzip's default
327 behavior in releases prior to 5.11; the new default behavior is
328 identical to the old behavior with the -U option, which is now
329 obsolete and will be removed in a future release.) Depending on
330 the archiver, files archived under single-case file systems
331 (VMS, old MS-DOS FAT, etc.) may be stored as all-uppercase
332 names; this can be ugly or inconvenient when extracting to a
333 case-preserving file system such as OS/2 HPFS or a case-sensi‐
334 tive one such as under Unix. By default unzip lists and
335 extracts such filenames exactly as they're stored (excepting
336 truncation, conversion of unsupported characters, etc.); this
337 option causes the names of all files from certain systems to be
338 converted to lowercase. The -LL option forces conversion of
339 every filename to lowercase, regardless of the originating file
340 system.
341
342 -M pipe all output through an internal pager similar to the Unix
343 more(1) command. At the end of a screenful of output, unzip
344 pauses with a ``--More--'' prompt; the next screenful may be
345 viewed by pressing the Enter (Return) key or the space bar.
346 unzip can be terminated by pressing the ``q'' key and, on some
347 systems, the Enter/Return key. Unlike Unix more(1), there is no
348 forward-searching or editing capability. Also, unzip doesn't
349 notice if long lines wrap at the edge of the screen, effectively
350 resulting in the printing of two or more lines and the likeli‐
351 hood that some text will scroll off the top of the screen before
352 being viewed. On some systems the number of available lines on
353 the screen is not detected, in which case unzip assumes the
354 height is 24 lines.
355
356 -n never overwrite existing files. If a file already exists, skip
357 the extraction of that file without prompting. By default unzip
358 queries before extracting any file that already exists; the user
359 may choose to overwrite only the current file, overwrite all
360 files, skip extraction of the current file, skip extraction of
361 all existing files, or rename the current file.
362
363 -N [Amiga] extract file comments as Amiga filenotes. File comments
364 are created with the -c option of zip(1L), or with the -N option
365 of the Amiga port of zip(1L), which stores filenotes as com‐
366 ments.
367
368 -o overwrite existing files without prompting. This is a dangerous
369 option, so use it with care. (It is often used with -f, how‐
370 ever, and is the only way to overwrite directory EAs under
371 OS/2.)
372
373 -P password
374 use password to decrypt encrypted zipfile entries (if any).
375 THIS IS INSECURE! Many multi-user operating systems provide
376 ways for any user to see the current command line of any other
377 user; even on stand-alone systems there is always the threat of
378 over-the-shoulder peeking. Storing the plaintext password as
379 part of a command line in an automated script is even worse.
380 Whenever possible, use the non-echoing, interactive prompt to
381 enter passwords. (And where security is truly important, use
382 strong encryption such as Pretty Good Privacy instead of the
383 relatively weak encryption provided by standard zipfile utili‐
384 ties.)
385
386 -q perform operations quietly (-qq = even quieter). Ordinarily
387 unzip prints the names of the files it's extracting or testing,
388 the extraction methods, any file or zipfile comments that may be
389 stored in the archive, and possibly a summary when finished with
390 each archive. The -q[q] options suppress the printing of some
391 or all of these messages.
392
393 -s [OS/2, NT, MS-DOS] convert spaces in filenames to underscores.
394 Since all PC operating systems allow spaces in filenames, unzip
395 by default extracts filenames with spaces intact (e.g.,
396 ``EA DATA. SF''). This can be awkward, however, since MS-DOS in
397 particular does not gracefully support spaces in filenames.
398 Conversion of spaces to underscores can eliminate the awkward‐
399 ness in some cases.
400
401 -S [VMS] convert text files (-a, -aa) into Stream_LF record format,
402 instead of the text-file default, variable-length record format.
403 (Stream_LF is the default record format of VMS unzip. It is
404 applied unless conversion (-a, -aa and/or -b, -bb) is requested
405 or a VMS-specific entry is processed.)
406
407 -U [UNICODE_SUPPORT only] modify or disable UTF-8 handling. When
408 UNICODE_SUPPORT is available, the option -U forces unzip to
409 escape all non-ASCII characters from UTF-8 coded filenames as
410 ``#Uxxxx'' (for UCS-2 characters, or ``#Lxxxxxx'' for unicode
411 codepoints needing 3 octets). This option is mainly provided
412 for debugging purpose when the fairly new UTF-8 support is sus‐
413 pected to mangle up extracted filenames.
414
415 The option -UU allows to entirely disable the recognition of
416 UTF-8 encoded filenames. The handling of filename codings
417 within unzip falls back to the behaviour of previous versions.
418
419 [old, obsolete usage] leave filenames uppercase if created under
420 MS-DOS, VMS, etc. See -L above.
421
422 -V retain (VMS) file version numbers. VMS files can be stored with
423 a version number, in the format file.ext;##. By default the
424 ``;##'' version numbers are stripped, but this option allows
425 them to be retained. (On file systems that limit filenames to
426 particularly short lengths, the version numbers may be truncated
427 or stripped regardless of this option.)
428
429 -W [only when WILD_STOP_AT_DIR compile-time option enabled] modi‐
430 fies the pattern matching routine so that both `?' (single-char
431 wildcard) and `*' (multi-char wildcard) do not match the direc‐
432 tory separator character `/'. (The two-character sequence
433 ``**'' acts as a multi-char wildcard that includes the directory
434 separator in its matched characters.) Examples:
435
436 "*.c" matches "foo.c" but not "mydir/foo.c"
437 "**.c" matches both "foo.c" and "mydir/foo.c"
438 "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
439 "??*/*" matches "ab/foo" and "abc/foo"
440 but not "a/foo" or "a/b/foo"
441
442 This modified behaviour is equivalent to the pattern matching
443 style used by the shells of some of UnZip's supported target OSs
444 (one example is Acorn RISC OS). This option may not be avail‐
445 able on systems where the Zip archive's internal directory sepa‐
446 rator character `/' is allowed as regular character in native
447 operating system filenames. (Currently, UnZip uses the same
448 pattern matching rules for both wildcard zipfile specifications
449 and zip entry selection patterns in most ports. For systems
450 allowing `/' as regular filename character, the -W option would
451 not work as expected on a wildcard zipfile specification.)
452
453 -X [VMS, Unix, OS/2, NT, Tandem] restore owner/protection info
454 (UICs and ACL entries) under VMS, or user and group info
455 (UID/GID) under Unix, or access control lists (ACLs) under cer‐
456 tain network-enabled versions of OS/2 (Warp Server with IBM LAN
457 Server/Requester 3.0 to 5.0; Warp Connect with IBM Peer 1.0), or
458 security ACLs under Windows NT. In most cases this will require
459 special system privileges, and doubling the option (-XX) under
460 NT instructs unzip to use privileges for extraction; but under
461 Unix, for example, a user who belongs to several groups can
462 restore files owned by any of those groups, as long as the user
463 IDs match his or her own. Note that ordinary file attributes
464 are always restored--this option applies only to optional, extra
465 ownership info available on some operating systems. [NT's
466 access control lists do not appear to be especially compatible
467 with OS/2's, so no attempt is made at cross-platform portability
468 of access privileges. It is not clear under what conditions
469 this would ever be useful anyway.]
470
471 -Y [VMS] treat archived file name endings of ``.nnn'' (where
472 ``nnn'' is a decimal number) as if they were VMS version num‐
473 bers (``;nnn''). (The default is to treat them as file types.)
474 Example:
475 "a.b.3" -> "a.b;3".
476
477 -$ [MS-DOS, OS/2, NT] restore the volume label if the extraction
478 medium is removable (e.g., a diskette). Doubling the option
479 (-$$) allows fixed media (hard disks) to be labelled as well.
480 By default, volume labels are ignored.
481
482 -/ extensions
483 [Acorn only] overrides the extension list supplied by Unzip$Ext
484 environment variable. During extraction, filename extensions
485 that match one of the items in this extension list are swapped
486 in front of the base name of the extracted file.
487
488 -: [all but Acorn, VM/CMS, MVS, Tandem] allows to extract archive
489 members into locations outside of the current `` extraction root
490 folder''. For security reasons, unzip normally removes ``parent
491 dir'' path components (``../'') from the names of extracted
492 file. This safety feature (new for version 5.50) prevents unzip
493 from accidentally writing files to ``sensitive'' areas outside
494 the active extraction folder tree head. The -: option lets
495 unzip switch back to its previous, more liberal behaviour, to
496 allow exact extraction of (older) archives that used ``../''
497 components to create multiple directory trees at the level of
498 the current extraction folder. This option does not enable
499 writing explicitly to the root directory (``/''). To achieve
500 this, it is necessary to set the extraction target folder to
501 root (e.g. -d / ). However, when the -: option is specified, it
502 is still possible to implicitly write to the root directory by
503 specifying enough ``../'' path components within the zip ar‐
504 chive. Use this option with extreme caution.
505
506 -^ [Unix only] allow control characters in names of extracted ZIP
507 archive entries. On Unix, a file name may contain any (8-bit)
508 character code with the two exception '/' (directory delimiter)
509 and NUL (0x00, the C string termination indicator), unless the
510 specific file system has more restrictive conventions. Gener‐
511 ally, this allows to embed ASCII control characters (or even
512 sophisticated control sequences) in file names, at least on
513 'native' Unix file systems. However, it may be highly suspi‐
514 cious to make use of this Unix "feature". Embedded control
515 characters in file names might have nasty side effects when dis‐
516 played on screen by some listing code without sufficient filter‐
517 ing. And, for ordinary users, it may be difficult to handle
518 such file names (e.g. when trying to specify it for open, copy,
519 move, or delete operations). Therefore, unzip applies a filter
520 by default that removes potentially dangerous control characters
521 from the extracted file names. The -^ option allows to override
522 this filter in the rare case that embedded filename control
523 characters are to be intentionally restored.
524
525 -2 [VMS] force unconditionally conversion of file names to
526 ODS2-compatible names. The default is to exploit the destina‐
527 tion file system, preserving case and extended file name charac‐
528 ters on an ODS5 destination file system; and applying the
529 ODS2-compatibility file name filtering on an ODS2 destination
530 file system.
531
533 unzip's default behavior may be modified via options placed in an envi‐
534 ronment variable. This can be done with any option, but it is probably
535 most useful with the -a, -L, -C, -q, -o, or -n modifiers: make unzip
536 auto-convert text files by default, make it convert filenames from
537 uppercase systems to lowercase, make it match names case-insensitively,
538 make it quieter, or make it always overwrite or never overwrite files
539 as it extracts them. For example, to make unzip act as quietly as pos‐
540 sible, only reporting errors, one would use one of the following com‐
541 mands:
542
543 Unix Bourne shell:
544 UNZIP=-qq; export UNZIP
545
546 Unix C shell:
547 setenv UNZIP -qq
548
549 OS/2 or MS-DOS:
550 set UNZIP=-qq
551
552 VMS (quotes for lowercase):
553 define UNZIP_OPTS "-qq"
554
555 Environment options are, in effect, considered to be just like any
556 other command-line options, except that they are effectively the first
557 options on the command line. To override an environment option, one
558 may use the ``minus operator'' to remove it. For instance, to override
559 one of the quiet-flags in the example above, use the command
560
561 unzip --q[other options] zipfile
562
563 The first hyphen is the normal switch character, and the second is a
564 minus sign, acting on the q option. Thus the effect here is to cancel
565 one quantum of quietness. To cancel both quiet flags, two (or more)
566 minuses may be used:
567
568 unzip -t--q zipfile
569 unzip ---qt zipfile
570
571 (the two are equivalent). This may seem awkward or confusing, but it
572 is reasonably intuitive: just ignore the first hyphen and go from
573 there. It is also consistent with the behavior of Unix nice(1).
574
575 As suggested by the examples above, the default variable names are
576 UNZIP_OPTS for VMS (where the symbol used to install unzip as a foreign
577 command would otherwise be confused with the environment variable), and
578 UNZIP for all other operating systems. For compatibility with zip(1L),
579 UNZIPOPT is also accepted (don't ask). If both UNZIP and UNZIPOPT are
580 defined, however, UNZIP takes precedence. unzip's diagnostic option
581 (-v with no zipfile name) can be used to check the values of all four
582 possible unzip and zipinfo environment variables.
583
584 The timezone variable (TZ) should be set according to the local time‐
585 zone in order for the -f and -u to operate correctly. See the descrip‐
586 tion of -f above for details. This variable may also be necessary to
587 get timestamps of extracted files to be set correctly. The WIN32
588 (Win9x/ME/NT4/2K/XP/2K3) port of unzip gets the timezone configuration
589 from the registry, assuming it is correctly set in the Control Panel.
590 The TZ variable is ignored for this port.
591
593 Encrypted archives are fully supported by Info-ZIP software, but due to
594 United States export restrictions, de-/encryption support might be dis‐
595 abled in your compiled binary. However, since spring 2000, US export
596 restrictions have been liberated, and our source archives do now
597 include full crypt code. In case you need binary distributions with
598 crypt support enabled, see the file ``WHERE'' in any Info-ZIP source or
599 binary distribution for locations both inside and outside the US.
600
601 Some compiled versions of unzip may not support decryption. To check a
602 version for crypt support, either attempt to test or extract an
603 encrypted archive, or else check unzip's diagnostic screen (see the -v
604 option above) for ``[decryption]'' as one of the special compilation
605 options.
606
607 As noted above, the -P option may be used to supply a password on the
608 command line, but at a cost in security. The preferred decryption
609 method is simply to extract normally; if a zipfile member is encrypted,
610 unzip will prompt for the password without echoing what is typed.
611 unzip continues to use the same password as long as it appears to be
612 valid, by testing a 12-byte header on each file. The correct password
613 will always check out against the header, but there is a 1-in-256
614 chance that an incorrect password will as well. (This is a security
615 feature of the PKWARE zipfile format; it helps prevent brute-force
616 attacks that might otherwise gain a large speed advantage by testing
617 only the header.) In the case that an incorrect password is given but
618 it passes the header test anyway, either an incorrect CRC will be gen‐
619 erated for the extracted data or else unzip will fail during the
620 extraction because the ``decrypted'' bytes do not constitute a valid
621 compressed data stream.
622
623 If the first password fails the header check on some file, unzip will
624 prompt for another password, and so on until all files are extracted.
625 If a password is not known, entering a null password (that is, just a
626 carriage return or ``Enter'') is taken as a signal to skip all further
627 prompting. Only unencrypted files in the archive(s) will thereafter be
628 extracted. (In fact, that's not quite true; older versions of zip(1L)
629 and zipcloak(1L) allowed null passwords, so unzip checks each encrypted
630 file to see if the null password works. This may result in ``false
631 positives'' and extraction errors, as noted above.)
632
633 Archives encrypted with 8-bit passwords (for example, passwords with
634 accented European characters) may not be portable across systems and/or
635 other archivers. This problem stems from the use of multiple encoding
636 methods for such characters, including Latin-1 (ISO 8859-1) and OEM
637 code page 850. DOS PKZIP 2.04g uses the OEM code page; Windows PKZIP
638 2.50 uses Latin-1 (and is therefore incompatible with DOS PKZIP); Info-
639 ZIP uses the OEM code page on DOS, OS/2 and Win3.x ports but ISO coding
640 (Latin-1 etc.) everywhere else; and Nico Mak's WinZip 6.x does not
641 allow 8-bit passwords at all. UnZip 5.3 (or newer) attempts to use the
642 default character set first (e.g., Latin-1), followed by the alternate
643 one (e.g., OEM code page) to test passwords. On EBCDIC systems, if
644 both of these fail, EBCDIC encoding will be tested as a last resort.
645 (EBCDIC is not tested on non-EBCDIC systems, because there are no known
646 archivers that encrypt using EBCDIC encoding.) ISO character encodings
647 other than Latin-1 are not supported. The new addition of (partially)
648 Unicode (resp. UTF-8) support in UnZip 6.0 has not yet been adapted to
649 the encryption password handling in unzip. On systems that use UTF-8
650 as native character encoding, unzip simply tries decryption with the
651 native UTF-8 encoded password; the built-in attempts to check the pass‐
652 word in translated encoding have not yet been adapted for UTF-8 support
653 and will consequently fail.
654
656 To use unzip to extract all members of the archive letters.zip into the
657 current directory and subdirectories below it, creating any subdirecto‐
658 ries as necessary:
659
660 unzip letters
661
662 To extract all members of letters.zip into the current directory only:
663
664 unzip -j letters
665
666 To test letters.zip, printing only a summary message indicating whether
667 the archive is OK or not:
668
669 unzip -tq letters
670
671 To test all zipfiles in the current directory, printing only the sum‐
672 maries:
673
674 unzip -tq \*.zip
675
676 (The backslash before the asterisk is only required if the shell
677 expands wildcards, as in Unix; double quotes could have been used
678 instead, as in the source examples below.) To extract to standard out‐
679 put all members of letters.zip whose names end in .tex, auto-converting
680 to the local end-of-line convention and piping the output into more(1):
681
682 unzip -ca letters \*.tex | more
683
684 To extract the binary file paper1.dvi to standard output and pipe it to
685 a printing program:
686
687 unzip -p articles paper1.dvi | dvips
688
689 To extract all FORTRAN and C source files--*.f, *.c, *.h, and Make‐
690 file--into the /tmp directory:
691
692 unzip source.zip "*.[fch]" Makefile -d /tmp
693
694 (the double quotes are necessary only in Unix and only if globbing is
695 turned on). To extract all FORTRAN and C source files, regardless of
696 case (e.g., both *.c and *.C, and any makefile, Makefile, MAKEFILE or
697 similar):
698
699 unzip -C source.zip "*.[fch]" makefile -d /tmp
700
701 To extract any such files but convert any uppercase MS-DOS or VMS names
702 to lowercase and convert the line-endings of all of the files to the
703 local standard (without respect to any files that might be marked
704 ``binary''):
705
706 unzip -aaCL source.zip "*.[fch]" makefile -d /tmp
707
708 To extract only newer versions of the files already in the current
709 directory, without querying (NOTE: be careful of unzipping in one
710 timezone a zipfile created in another--ZIP archives other than those
711 created by Zip 2.1 or later contain no timezone information, and a
712 ``newer'' file from an eastern timezone may, in fact, be older):
713
714 unzip -fo sources
715
716 To extract newer versions of the files already in the current directory
717 and to create any files not already there (same caveat as previous
718 example):
719
720 unzip -uo sources
721
722 To display a diagnostic screen showing which unzip and zipinfo options
723 are stored in environment variables, whether decryption support was
724 compiled in, the compiler with which unzip was compiled, etc.:
725
726 unzip -v
727
728 In the last five examples, assume that UNZIP or UNZIP_OPTS is set to
729 -q. To do a singly quiet listing:
730
731 unzip -l file.zip
732
733 To do a doubly quiet listing:
734
735 unzip -ql file.zip
736
737 (Note that the ``.zip'' is generally not necessary.) To do a standard
738 listing:
739
740 unzip --ql file.zip
741 or
742 unzip -l-q file.zip
743 or
744 unzip -l--q file.zip
745 (Extra minuses in options don't hurt.)
746
748 The current maintainer, being a lazy sort, finds it very useful to
749 define a pair of aliases: tt for ``unzip -tq'' and ii for ``unzip -Z''
750 (or ``zipinfo''). One may then simply type ``tt zipfile'' to test an
751 archive, something that is worth making a habit of doing. With luck
752 unzip will report ``No errors detected in compressed data of zip‐
753 file.zip,'' after which one may breathe a sigh of relief.
754
755 The maintainer also finds it useful to set the UNZIP environment vari‐
756 able to ``-aL'' and is tempted to add ``-C'' as well. His ZIPINFO
757 variable is set to ``-z''.
758
760 The exit status (or error level) approximates the exit codes defined by
761 PKWARE and takes on the following values, except under VMS:
762
763 0 normal; no errors or warnings detected.
764
765 1 one or more warning errors were encountered, but process‐
766 ing completed successfully anyway. This includes zip‐
767 files where one or more files was skipped due to unsup‐
768 ported compression method or encryption with an unknown
769 password.
770
771 2 a generic error in the zipfile format was detected. Pro‐
772 cessing may have completed successfully anyway; some bro‐
773 ken zipfiles created by other archivers have simple work-
774 arounds.
775
776 3 a severe error in the zipfile format was detected. Pro‐
777 cessing probably failed immediately.
778
779 4 unzip was unable to allocate memory for one or more buf‐
780 fers during program initialization.
781
782 5 unzip was unable to allocate memory or unable to obtain a
783 tty to read the decryption password(s).
784
785 6 unzip was unable to allocate memory during decompression
786 to disk.
787
788 7 unzip was unable to allocate memory during in-memory
789 decompression.
790
791 8 [currently not used]
792
793 9 the specified zipfiles were not found.
794
795 10 invalid options were specified on the command line.
796
797 11 no matching files were found.
798
799 50 the disk is (or was) full during extraction.
800
801 51 the end of the ZIP archive was encountered prematurely.
802
803 80 the user aborted unzip prematurely with control-C (or
804 similar)
805
806 81 testing or extraction of one or more files failed due to
807 unsupported compression methods or unsupported decryp‐
808 tion.
809
810 82 no files were found due to bad decryption password(s).
811 (If even one file is successfully processed, however, the
812 exit status is 1.)
813
814 VMS interprets standard Unix (or PC) return values as other, scarier-
815 looking things, so unzip instead maps them into VMS-style status codes.
816 The current mapping is as follows: 1 (success) for normal exit,
817 0x7fff0001 for warning errors, and (0x7fff000? + 16*nor‐
818 mal_unzip_exit_status) for all other errors, where the `?' is 2 (error)
819 for unzip values 2, 9-11 and 80-82, and 4 (fatal error) for the remain‐
820 ing ones (3-8, 50, 51). In addition, there is a compilation option to
821 expand upon this behavior: defining RETURN_CODES results in a human-
822 readable explanation of what the error status means.
823
825 Multi-part archives are not yet supported, except in conjunction with
826 zip. (All parts must be concatenated together in order, and then ``zip
827 -F'' (for zip 2.x) or ``zip -FF'' (for zip 3.x) must be performed on
828 the concatenated archive in order to ``fix'' it. Also, zip 3.0 and
829 later can combine multi-part (split) archives into a combined single-
830 file archive using ``zip -s- inarchive -O outarchive''. See the zip 3
831 manual page for more information.) This will definitely be corrected
832 in the next major release.
833
834 Archives read from standard input are not yet supported, except with
835 funzip (and then only the first member of the archive can be
836 extracted).
837
838 Archives encrypted with 8-bit passwords (e.g., passwords with accented
839 European characters) may not be portable across systems and/or other
840 archivers. See the discussion in DECRYPTION above.
841
842 unzip's -M (``more'') option tries to take into account automatic wrap‐
843 ping of long lines. However, the code may fail to detect the correct
844 wrapping locations. First, TAB characters (and similar control
845 sequences) are not taken into account, they are handled as ordinary
846 printable characters. Second, depending on the actual system / OS
847 port, unzip may not detect the true screen geometry but rather rely on
848 "commonly used" default dimensions. The correct handling of tabs would
849 require the implementation of a query for the actual tabulator setup on
850 the output console.
851
852 Dates, times and permissions of stored directories are not restored
853 except under Unix. (On Windows NT and successors, timestamps are now
854 restored.)
855
856 [MS-DOS] When extracting or testing files from an archive on a defec‐
857 tive floppy diskette, if the ``Fail'' option is chosen from DOS's
858 ``Abort, Retry, Fail?'' message, older versions of unzip may hang the
859 system, requiring a reboot. This problem appears to be fixed, but con‐
860 trol-C (or control-Break) can still be used to terminate unzip.
861
862 Under DEC Ultrix, unzip would sometimes fail on long zipfiles (bad CRC,
863 not always reproducible). This was apparently due either to a hardware
864 bug (cache memory) or an operating system bug (improper handling of
865 page faults?). Since Ultrix has been abandoned in favor of Digital
866 Unix (OSF/1), this may not be an issue anymore.
867
868 [Unix] Unix special files such as FIFO buffers (named pipes), block
869 devices and character devices are not restored even if they are somehow
870 represented in the zipfile, nor are hard-linked files relinked. Basi‐
871 cally the only file types restored by unzip are regular files, directo‐
872 ries and symbolic (soft) links.
873
874 [OS/2] Extended attributes for existing directories are only updated if
875 the -o (``overwrite all'') option is given. This is a limitation of
876 the operating system; because directories only have a creation time
877 associated with them, unzip has no way to determine whether the stored
878 attributes are newer or older than those on disk. In practice this may
879 mean a two-pass approach is required: first unpack the archive nor‐
880 mally (with or without freshening/updating existing files), then over‐
881 write just the directory entries (e.g., ``unzip -o foo */'').
882
883 [VMS] When extracting to another directory, only the [.foo] syntax is
884 accepted for the -d option; the simple Unix foo syntax is silently
885 ignored (as is the less common VMS foo.dir syntax).
886
887 [VMS] When the file being extracted already exists, unzip's query only
888 allows skipping, overwriting or renaming; there should additionally be
889 a choice for creating a new version of the file. In fact, the ``over‐
890 write'' choice does create a new version; the old version is not over‐
891 written or deleted.
892
894 funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L), zip‐
895 note(1L), zipsplit(1L)
896
898 The Info-ZIP home page is currently at
899 http://www.info-zip.org/pub/infozip/
900 or
901 ftp://ftp.info-zip.org/pub/infozip/ .
902
904 The primary Info-ZIP authors (current semi-active members of the Zip-
905 Bugs workgroup) are: Ed Gordon (Zip, general maintenance, shared code,
906 Zip64, Win32, Unix, Unicode); Christian Spieler (UnZip maintenance
907 coordination, VMS, MS-DOS, Win32, shared code, general Zip and UnZip
908 integration and optimization); Onno van der Linden (Zip); Mike White
909 (Win32, Windows GUI, Windows DLLs); Kai Uwe Rommel (OS/2, Win32);
910 Steven M. Schweda (VMS, Unix, support of new features); Paul Kienitz
911 (Amiga, Win32, Unicode); Chris Herborth (BeOS, QNX, Atari); Jonathan
912 Hudson (SMS/QDOS); Sergio Monesi (Acorn RISC OS); Harald Denker (Atari,
913 MVS); John Bush (Solaris, Amiga); Hunter Goatley (VMS, Info-ZIP Site
914 maintenance); Steve Salisbury (Win32); Steve Miller (Windows CE GUI),
915 Johnny Lee (MS-DOS, Win32, Zip64); and Dave Smith (Tandem NSK).
916
917 The following people were former members of the Info-ZIP development
918 group and provided major contributions to key parts of the current
919 code: Greg ``Cave Newt'' Roelofs (UnZip, unshrink decompression); Jean-
920 loup Gailly (deflate compression); Mark Adler (inflate decompression,
921 fUnZip).
922
923 The author of the original unzip code upon which Info-ZIP's was based
924 is Samuel H. Smith; Carl Mascott did the first Unix port; and David P.
925 Kirschbaum organized and led Info-ZIP in its early days with Keith
926 Petersen hosting the original mailing list at WSMR-SimTel20. The full
927 list of contributors to UnZip has grown quite large; please refer to
928 the CONTRIBS file in the UnZip source distribution for a relatively
929 complete version.
930
932 v1.2 15 Mar 89 Samuel H. Smith
933 v2.0 9 Sep 89 Samuel H. Smith
934 v2.x fall 1989 many Usenet contributors
935 v3.0 1 May 90 Info-ZIP (DPK, consolidator)
936 v3.1 15 Aug 90 Info-ZIP (DPK, consolidator)
937 v4.0 1 Dec 90 Info-ZIP (GRR, maintainer)
938 v4.1 12 May 91 Info-ZIP
939 v4.2 20 Mar 92 Info-ZIP (Zip-Bugs subgroup, GRR)
940 v5.0 21 Aug 92 Info-ZIP (Zip-Bugs subgroup, GRR)
941 v5.01 15 Jan 93 Info-ZIP (Zip-Bugs subgroup, GRR)
942 v5.1 7 Feb 94 Info-ZIP (Zip-Bugs subgroup, GRR)
943 v5.11 2 Aug 94 Info-ZIP (Zip-Bugs subgroup, GRR)
944 v5.12 28 Aug 94 Info-ZIP (Zip-Bugs subgroup, GRR)
945 v5.2 30 Apr 96 Info-ZIP (Zip-Bugs subgroup, GRR)
946 v5.3 22 Apr 97 Info-ZIP (Zip-Bugs subgroup, GRR)
947 v5.31 31 May 97 Info-ZIP (Zip-Bugs subgroup, GRR)
948 v5.32 3 Nov 97 Info-ZIP (Zip-Bugs subgroup, GRR)
949 v5.4 28 Nov 98 Info-ZIP (Zip-Bugs subgroup, SPC)
950 v5.41 16 Apr 00 Info-ZIP (Zip-Bugs subgroup, SPC)
951 v5.42 14 Jan 01 Info-ZIP (Zip-Bugs subgroup, SPC)
952 v5.5 17 Feb 02 Info-ZIP (Zip-Bugs subgroup, SPC)
953 v5.51 22 May 04 Info-ZIP (Zip-Bugs subgroup, SPC)
954 v5.52 28 Feb 05 Info-ZIP (Zip-Bugs subgroup, SPC)
955 v6.0 20 Apr 09 Info-ZIP (Zip-Bugs subgroup, SPC)
956
957
958
959Info-ZIP 20 April 2009 (v6.0) UNZIP(1L)