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