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