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