mirror of https://github.com/BOINC/boinc.git
988 lines
47 KiB
Plaintext
988 lines
47 KiB
Plaintext
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
NAME
|
|
unzip - list, test and extract compressed files in a ZIP
|
|
archive
|
|
|
|
SYNOPSIS
|
|
unzip [-Z] [-cflptuvz[abjnoqsCLMVX$/:]] file[.zip]
|
|
[file(s) ...] [-x xfile(s) ...] [-d exdir]
|
|
|
|
DESCRIPTION
|
|
unzip will list, test, or extract files from a ZIP
|
|
archive, commonly found on MS-DOS systems. The default
|
|
behavior (with no options) is to extract into the current
|
|
directory (and subdirectories below it) all files from the
|
|
specified ZIP archive. A companion program, zip(1L), cre-
|
|
ates ZIP archives; both programs are compatible with
|
|
archives created by PKWARE's PKZIP and PKUNZIP for MS-DOS,
|
|
but in many cases the program options or default behaviors
|
|
differ.
|
|
|
|
ARGUMENTS
|
|
file[.zip]
|
|
Path of the ZIP archive(s). If the file specifica-
|
|
tion is a wildcard, each matching file is processed
|
|
in an order determined by the operating system (or
|
|
file system). Only the filename can be a wildcard;
|
|
the path itself cannot. Wildcard expressions are
|
|
similar to those supported in commonly used Unix
|
|
shells (sh, ksh, csh) and may contain:
|
|
|
|
* matches a sequence of 0 or more characters
|
|
|
|
? matches exactly 1 character
|
|
|
|
[...] matches any single character found inside
|
|
the brackets; ranges are specified by a
|
|
beginning character, a hyphen, and an ending
|
|
character. If an exclamation point or a
|
|
caret (`!' or `^') follows the left bracket,
|
|
then the range of characters within the
|
|
brackets is complemented (that is, anything
|
|
except the characters inside the brackets is
|
|
considered a match).
|
|
|
|
(Be sure to quote any character that might other-
|
|
wise be interpreted or modified by the operating
|
|
system, particularly under Unix and VMS.) If no
|
|
matches are found, the specification is assumed to
|
|
be a literal filename; and if that also fails, the
|
|
suffix .zip is appended. Note that self-extracting
|
|
ZIP files are supported, as with any other ZIP
|
|
archive; just specify the .exe suffix (if any)
|
|
explicitly.
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 1
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
[file(s)]
|
|
An optional list of archive members to be pro-
|
|
cessed, separated by spaces. (VMS versions com-
|
|
piled with VMSCLI defined must delimit files with
|
|
commas instead. See -v in OPTIONS below.) Regular
|
|
expressions (wildcards) may be used to match multi-
|
|
ple members; see above. Again, be sure to quote
|
|
expressions that would otherwise be expanded or
|
|
modified by the operating system.
|
|
|
|
[-x xfile(s)]
|
|
An optional list of archive members to be excluded
|
|
from processing. Since wildcard characters match
|
|
directory separators (`/'), this option may be used
|
|
to exclude any files that are in subdirectories.
|
|
For example, ``unzip foo *.[ch] -x */*'' would
|
|
extract all C source files in the main directory,
|
|
but none in any subdirectories. Without the -x
|
|
option, all C source files in all directories
|
|
within the zipfile would be extracted.
|
|
|
|
[-d exdir]
|
|
An optional directory to which to extract files.
|
|
By default, all files and subdirectories are recre-
|
|
ated in the current directory; the -d option allows
|
|
extraction in an arbitrary directory (always assum-
|
|
ing one has permission to write to the directory).
|
|
This option need not appear at the end of the com-
|
|
mand line; it is also accepted before the zipfile
|
|
specification (with the normal options), immedi-
|
|
ately after the zipfile specification, or between
|
|
the file(s) and the -x option. The option and
|
|
directory may be concatenated without any white
|
|
space between them, but note that this may cause
|
|
normal shell behavior to be suppressed. In partic-
|
|
ular, ``-d ~'' (tilde) is expanded by Unix C shells
|
|
into the name of the user's home directory, but
|
|
``-d~'' is treated as a literal subdirectory ``~''
|
|
of the current directory.
|
|
|
|
OPTIONS
|
|
Note that, in order to support obsolescent hardware,
|
|
unzip's usage screen is limited to 22 or 23 lines and
|
|
should therefore be considered only a reminder of the
|
|
basic unzip syntax rather than an exhaustive list of all
|
|
possible flags. The exhaustive list follows:
|
|
|
|
-Z zipinfo(1L) mode. If the first option on the com-
|
|
mand line is -Z, the remaining options are taken to
|
|
be zipinfo(1L) options. See the appropriate manual
|
|
page for a description of these options.
|
|
|
|
-A [OS/2, Unix DLL] print extended help for the DLL's
|
|
programming interface (API).
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 2
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
-c extract files to stdout/screen (``CRT''). This
|
|
option is similar to the -p option except that the
|
|
name of each file is printed as it is extracted,
|
|
the -a option is allowed, and ASCII-EBCDIC conver-
|
|
sion is automatically performed if appropriate.
|
|
This option is not listed in the unzip usage
|
|
screen.
|
|
|
|
-f freshen existing files, i.e., extract only those
|
|
files that already exist on disk and that are newer
|
|
than the disk copies. By default unzip queries
|
|
before overwriting, but the -o option may be used
|
|
to suppress the queries. Note that under many
|
|
operating systems, the TZ (timezone) environment
|
|
variable must be set correctly in order for -f and
|
|
-u to work properly (under Unix the variable is
|
|
usually set automatically). The reasons for this
|
|
are somewhat subtle but have to do with the differ-
|
|
ences between DOS-format file times (always local
|
|
time) and Unix-format times (always in GMT/UTC) and
|
|
the necessity to compare the two. A typical TZ
|
|
value is ``PST8PDT'' (US Pacific time with auto-
|
|
matic adjustment for Daylight Savings Time or
|
|
``summer time'').
|
|
|
|
-l list archive files (short format). The names,
|
|
uncompressed file sizes and modification dates and
|
|
times of the specified files are printed, along
|
|
with totals for all files specified. If UnZip was
|
|
compiled with OS2_EAS defined, the -l option also
|
|
lists columns for the sizes of stored OS/2 extended
|
|
attributes (EAs) and OS/2 access control lists
|
|
(ACLs). In addition, the zipfile comment and indi-
|
|
vidual file comments (if any) are displayed. If a
|
|
file was archived from a single-case file system
|
|
(for example, the old MS-DOS FAT file system) and
|
|
the -L option was given, the filename is converted
|
|
to lowercase and is prefixed with a caret (^).
|
|
|
|
-p extract files to pipe (stdout). Nothing but the
|
|
file data is sent to stdout, and the files are
|
|
always extracted in binary format, just as they are
|
|
stored (no conversions).
|
|
|
|
-t test archive files. This option extracts each
|
|
specified file in memory and compares the CRC
|
|
(cyclic redundancy check, an enhanced checksum) of
|
|
the expanded file with the original file's stored
|
|
CRC value.
|
|
|
|
-T [most OSes] set the timestamp on the archive(s) to
|
|
that of the newest file in each one. This corre-
|
|
sponds to zip's -go option except that it can be
|
|
used on wildcard zipfiles (e.g., ``unzip -T
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 3
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
\*.zip'') and is much faster.
|
|
|
|
-u update existing files and create new ones if
|
|
needed. This option performs the same function as
|
|
the -f option, extracting (with query) files that
|
|
are newer than those with the same name on disk,
|
|
and in addition it extracts those files that do not
|
|
already exist on disk. See -f above for informa-
|
|
tion on setting the timezone properly.
|
|
|
|
-v be verbose or print diagnostic version info. This
|
|
option has evolved and now behaves as both an
|
|
option and a modifier. As an option it has two
|
|
purposes: when a zipfile is specified with no
|
|
other options, -v lists archive files verbosely,
|
|
adding to the basic -l info the compression method,
|
|
compressed size, compression ratio and 32-bit CRC.
|
|
When no zipfile is specified (that is, the complete
|
|
command is simply ``unzip -v''), a diagnostic
|
|
screen is printed. In addition to the normal
|
|
header with release date and version, unzip lists
|
|
the home Info-ZIP ftp site and where to find a list
|
|
of other ftp and non-ftp sites; the target operat-
|
|
ing system for which it was compiled, as well as
|
|
(possibly) the hardware on which it was compiled,
|
|
the compiler and version used, and the compilation
|
|
date; any special compilation options that might
|
|
affect the program's operation (see also DECRYPTION
|
|
below); and any options stored in environment vari-
|
|
ables that might do the same (see ENVIRONMENT
|
|
OPTIONS below). As a modifier it works in conjunc-
|
|
tion with other options (e.g., -t) to produce more
|
|
verbose or debugging output; this is not yet fully
|
|
implemented but will be in future releases.
|
|
|
|
-z display only the archive comment.
|
|
|
|
MODIFIERS
|
|
-a convert text files. Ordinarily all files are
|
|
extracted exactly as they are stored (as ``binary''
|
|
files). The -a option causes files identified by
|
|
zip as text files (those with the `t' label in zip-
|
|
info listings, rather than `b') to be automatically
|
|
extracted as such, converting line endings, end-of-
|
|
file characters and the character set itself as
|
|
necessary. (For example, Unix files use line feeds
|
|
(LFs) for end-of-line (EOL) and have no end-of-file
|
|
(EOF) marker; Macintoshes use carriage returns
|
|
(CRs) for EOLs; and most PC operating systems use
|
|
CR+LF for EOLs and control-Z for EOF. In addition,
|
|
IBM mainframes and the Michigan Terminal System use
|
|
EBCDIC rather than the more common ASCII character
|
|
set, and NT supports Unicode.) Note that zip's
|
|
identification of text files is by no means
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 4
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
perfect; some ``text'' files may actually be binary
|
|
and vice versa. unzip therefore prints ``[text]''
|
|
or ``[binary]'' as a visual check for each file it
|
|
extracts when using the -a option. The -aa option
|
|
forces all files to be extracted as text, regard-
|
|
less of the supposed file type.
|
|
|
|
-b [general] treat all files as binary (no text con-
|
|
versions). This is a shortcut for ---a.
|
|
|
|
-b [Tandem] force the creation files with filecode
|
|
type 180 ('C') when extracting Zip entries marked
|
|
as "text". (On Tandem, -a is enabled by default,
|
|
see above).
|
|
|
|
-b [VMS] auto-convert binary files (see -a above) to
|
|
fixed-length, 512-byte record format. Doubling the
|
|
option (-bb) forces all files to be extracted in
|
|
this format. When extracting to standard output (-c
|
|
or -p option in effect), the default conversion of
|
|
text record delimiters is disabled for binary (-b)
|
|
resp. all (-bb) files.
|
|
|
|
-B [Unix only, and only if compiled with UNIXBACKUP
|
|
defined] save a backup copy of each overwritten
|
|
file with a tilde appended (e.g., the old copy of
|
|
``foo'' is renamed to ``foo~''). This is similar
|
|
to the default behavior of emacs(1) in many loca-
|
|
tions.
|
|
|
|
-C match filenames case-insensitively. unzip's phi-
|
|
losophy is ``you get what you ask for'' (this is
|
|
also responsible for the -L/-U change; see the rel-
|
|
evant options below). Because some file systems
|
|
are fully case-sensitive (notably those under the
|
|
Unix operating system) and because both ZIP
|
|
archives and unzip itself are portable across plat-
|
|
forms, unzip's default behavior is to match both
|
|
wildcard and literal filenames case-sensitively.
|
|
That is, specifying ``makefile'' on the command
|
|
line will only match ``makefile'' in the archive,
|
|
not ``Makefile'' or ``MAKEFILE'' (and similarly for
|
|
wildcard specifications). Since this does not cor-
|
|
respond to the behavior of many other operat-
|
|
ing/file systems (for example, OS/2 HPFS, which
|
|
preserves mixed case but is not sensitive to it),
|
|
the -C option may be used to force all filename
|
|
matches to be case-insensitive. In the example
|
|
above, all three files would then match ``make-
|
|
file'' (or ``make*'', or similar). The -C option
|
|
affects files in both the normal file list and the
|
|
excluded-file list (xlist).
|
|
|
|
-E [MacOS only] display contents of MacOS extra field
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 5
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
during restore operation.
|
|
|
|
-F [Acorn only] suppress removal of NFS filetype
|
|
extension from stored filenames.
|
|
|
|
-F [non-Acorn systems supporting long filenames with
|
|
embedded commas, and only if compiled with
|
|
ACORN_FTYPE_NFS defined] translate filetype infor-
|
|
mation from ACORN RISC OS extra field blocks into a
|
|
NFS filetype extension and append it to the names
|
|
of the extracted files. (When the stored filename
|
|
appears to already have an appended NFS filetype
|
|
extension, it is replaced by the info from the
|
|
extra field.)
|
|
|
|
-i [MacOS only] ignore filenames stored in MacOS extra
|
|
fields. Instead, the most compatible filename
|
|
stored in the generic part of the entry's header is
|
|
used.
|
|
|
|
-j junk paths. The archive's directory structure is
|
|
not recreated; all files are deposited in the
|
|
extraction directory (by default, the current one).
|
|
|
|
-J [BeOS only] junk file attributes. The file's BeOS
|
|
file attributes are not restored, just the file's
|
|
data.
|
|
|
|
-J [MacOS only] ignore MacOS extra fields. All Macin-
|
|
tosh specific info is skipped. Data-fork and
|
|
resource-fork are restored as separate files.
|
|
|
|
-L convert to lowercase any filename originating on an
|
|
uppercase-only operating system or file system.
|
|
(This was unzip's default behavior in releases
|
|
prior to 5.11; the new default behavior is identi-
|
|
cal to the old behavior with the -U option, which
|
|
is now obsolete and will be removed in a future
|
|
release.) Depending on the archiver, files
|
|
archived under single-case file systems (VMS, old
|
|
MS-DOS FAT, etc.) may be stored as all-uppercase
|
|
names; this can be ugly or inconvenient when
|
|
extracting to a case-preserving file system such as
|
|
OS/2 HPFS or a case-sensitive one such as under
|
|
Unix. By default unzip lists and extracts such
|
|
filenames exactly as they're stored (excepting
|
|
truncation, conversion of unsupported characters,
|
|
etc.); this option causes the names of all files
|
|
from certain systems to be converted to lowercase.
|
|
The -LL option forces conversion of every filename
|
|
to lowercase, regardless of the originating file
|
|
system.
|
|
|
|
-M pipe all output through an internal pager similar
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 6
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
to the Unix more(1) command. At the end of a
|
|
screenful of output, unzip pauses with a
|
|
``--More--'' prompt; the next screenful may be
|
|
viewed by pressing the Enter (Return) key or the
|
|
space bar. unzip can be terminated by pressing the
|
|
``q'' key and, on some systems, the Enter/Return
|
|
key. Unlike Unix more(1), there is no forward-
|
|
searching or editing capability. Also, unzip
|
|
doesn't notice if long lines wrap at the edge of
|
|
the screen, effectively resulting in the printing
|
|
of two or more lines and the likelihood that some
|
|
text will scroll off the top of the screen before
|
|
being viewed. On some systems the number of avail-
|
|
able lines on the screen is not detected, in which
|
|
case unzip assumes the height is 24 lines.
|
|
|
|
-n never overwrite existing files. If a file already
|
|
exists, skip the extraction of that file without
|
|
prompting. By default unzip queries before
|
|
extracting any file that already exists; the user
|
|
may choose to overwrite only the current file,
|
|
overwrite all files, skip extraction of the current
|
|
file, skip extraction of all existing files, or
|
|
rename the current file.
|
|
|
|
-N [Amiga] extract file comments as Amiga filenotes.
|
|
File comments are created with the -c option of
|
|
zip(1L), or with the -N option of the Amiga port of
|
|
zip(1L), which stores filenotes as comments.
|
|
|
|
-o overwrite existing files without prompting. This
|
|
is a dangerous option, so use it with care. (It is
|
|
often used with -f, however, and is the only way to
|
|
overwrite directory EAs under OS/2.)
|
|
|
|
-P password
|
|
use password to decrypt encrypted zipfile entries
|
|
(if any). THIS IS INSECURE! Many multi-user oper-
|
|
ating systems provide ways for any user to see the
|
|
current command line of any other user; even on
|
|
stand-alone systems there is always the threat of
|
|
over-the-shoulder peeking. Storing the plaintext
|
|
password as part of a command line in an automated
|
|
script is even worse. Whenever possible, use the
|
|
non-echoing, interactive prompt to enter passwords.
|
|
(And where security is truly important, use strong
|
|
encryption such as Pretty Good Privacy instead of
|
|
the relatively weak encryption provided by standard
|
|
zipfile utilities.)
|
|
|
|
-q perform operations quietly (-qq = even quieter).
|
|
Ordinarily unzip prints the names of the files it's
|
|
extracting or testing, the extraction methods, any
|
|
file or zipfile comments that may be stored in the
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 7
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
archive, and possibly a summary when finished with
|
|
each archive. The -q[q] options suppress the
|
|
printing of some or all of these messages.
|
|
|
|
-s [OS/2, NT, MS-DOS] convert spaces in filenames to
|
|
underscores. Since all PC operating systems allow
|
|
spaces in filenames, unzip by default extracts
|
|
filenames with spaces intact (e.g.,
|
|
``EA DATA. SF''). This can be awkward, however,
|
|
since MS-DOS in particular does not gracefully sup-
|
|
port spaces in filenames. Conversion of spaces to
|
|
underscores can eliminate the awkwardness in some
|
|
cases.
|
|
|
|
-U (obsolete; to be removed in a future release) leave
|
|
filenames uppercase if created under MS-DOS, VMS,
|
|
etc. See -L above.
|
|
|
|
-V retain (VMS) file version numbers. VMS files can
|
|
be stored with a version number, in the format
|
|
file.ext;##. By default the ``;##'' version num-
|
|
bers are stripped, but this option allows them to
|
|
be retained. (On file systems that limit filenames
|
|
to particularly short lengths, the version numbers
|
|
may be truncated or stripped regardless of this
|
|
option.)
|
|
|
|
-X [VMS, Unix, OS/2, NT] restore owner/protection info
|
|
(UICs) under VMS, or user and group info (UID/GID)
|
|
under Unix, or access control lists (ACLs) under
|
|
certain network-enabled versions of OS/2 (Warp
|
|
Server with IBM LAN Server/Requester 3.0 to 5.0;
|
|
Warp Connect with IBM Peer 1.0), or security ACLs
|
|
under Windows NT. In most cases this will require
|
|
special system privileges, and doubling the option
|
|
(-XX) under NT instructs unzip to use privileges
|
|
for extraction; but under Unix, for example, a user
|
|
who belongs to several groups can restore files
|
|
owned by any of those groups, as long as the user
|
|
IDs match his or her own. Note that ordinary file
|
|
attributes are always restored--this option applies
|
|
only to optional, extra ownership info available on
|
|
some operating systems. [NT's access control lists
|
|
do not appear to be especially compatible with
|
|
OS/2's, so no attempt is made at cross-platform
|
|
portability of access privileges. It is not clear
|
|
under what conditions this would ever be useful
|
|
anyway.]
|
|
|
|
-$ [MS-DOS, OS/2, NT] restore the volume label if the
|
|
extraction medium is removable (e.g., a diskette).
|
|
Doubling the option (-$$) allows fixed media (hard
|
|
disks) to be labelled as well. By default, volume
|
|
labels are ignored.
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 8
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
-/ extensions
|
|
[Acorn only] overrides the extension list supplied
|
|
by Unzip$Ext environment variable. During extrac-
|
|
tion, filename extensions that match one of the
|
|
items in this extension list are swapped in front
|
|
of the base name of the extracted file.
|
|
|
|
-: [all but Acorn, VM/CMS, MVS, Tandem] allows to
|
|
extract archive members into locations outside of
|
|
the current `` extraction root folder''. For secu-
|
|
rity reasons, unzip normally removes ``parent dir''
|
|
path components (``../'') from the names of
|
|
extracted file. This safety feature (new for ver-
|
|
sion 5.50) prevents unzip from accidentally writing
|
|
files to ``sensitive'' areas outside the active
|
|
extraction folder tree head. The -: option lets
|
|
unzip switch back to its previous, more liberal
|
|
behaviour, to allow exact extraction of (older)
|
|
archives that used ``../'' components to create
|
|
multiple directory trees at the level of the cur-
|
|
rent extraction folder.
|
|
|
|
ENVIRONMENT OPTIONS
|
|
unzip's default behavior may be modified via options
|
|
placed in an environment variable. This can be done with
|
|
any option, but it is probably most useful with the -a,
|
|
-L, -C, -q, -o, or -n modifiers: make unzip auto-convert
|
|
text files by default, make it convert filenames from
|
|
uppercase systems to lowercase, make it match names case-
|
|
insensitively, make it quieter, or make it always over-
|
|
write or never overwrite files as it extracts them. For
|
|
example, to make unzip act as quietly as possible, only
|
|
reporting errors, one would use one of the following com-
|
|
mands:
|
|
|
|
Unix Bourne shell:
|
|
UNZIP=-qq; export UNZIP
|
|
|
|
Unix C shell:
|
|
setenv UNZIP -qq
|
|
|
|
OS/2 or MS-DOS:
|
|
set UNZIP=-qq
|
|
|
|
VMS (quotes for lowercase):
|
|
define UNZIP_OPTS ""-qq""
|
|
|
|
Environment options are, in effect, considered to be just
|
|
like any other command-line options, except that they are
|
|
effectively the first options on the command line. To
|
|
override an environment option, one may use the ``minus
|
|
operator'' to remove it. For instance, to override one of
|
|
the quiet-flags in the example above, use the command
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 9
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
unzip --q[other options] zipfile
|
|
|
|
The first hyphen is the normal switch character, and the
|
|
second is a minus sign, acting on the q option. Thus the
|
|
effect here is to cancel one quantum of quietness. To
|
|
cancel both quiet flags, two (or more) minuses may be
|
|
used:
|
|
|
|
unzip -t--q zipfile
|
|
unzip ---qt zipfile
|
|
|
|
(the two are equivalent). This may seem awkward or con-
|
|
fusing, but it is reasonably intuitive: just ignore the
|
|
first hyphen and go from there. It is also consistent
|
|
with the behavior of Unix nice(1).
|
|
|
|
As suggested by the examples above, the default variable
|
|
names are UNZIP_OPTS for VMS (where the symbol used to
|
|
install unzip as a foreign command would otherwise be con-
|
|
fused with the environment variable), and UNZIP for all
|
|
other operating systems. For compatibility with zip(1L),
|
|
UNZIPOPT is also accepted (don't ask). If both UNZIP and
|
|
UNZIPOPT are defined, however, UNZIP takes precedence.
|
|
unzip's diagnostic option (-v with no zipfile name) can be
|
|
used to check the values of all four possible unzip and
|
|
zipinfo environment variables.
|
|
|
|
The timezone variable (TZ) should be set according to the
|
|
local timezone in order for the -f and -u to operate cor-
|
|
rectly. See the description of -f above for details.
|
|
This variable may also be necessary in order for times-
|
|
tamps on extracted files to be set correctly. Under Win-
|
|
dows 95/NT unzip should know the correct timezone even if
|
|
TZ is unset, assuming the timezone is correctly set in the
|
|
Control Panel.
|
|
|
|
DECRYPTION
|
|
Encrypted archives are fully supported by Info-ZIP soft-
|
|
ware, but due to United States export restrictions,
|
|
de-/encryption support might be disabled in your compiled
|
|
binary. However, since spring 2000, US export restric-
|
|
tions have been liberated, and our source archives do now
|
|
include full crypt code. In case you need binary distri-
|
|
butions with crypt support enabled, see the file ``WHERE''
|
|
in any Info-ZIP source or binary distribution for loca-
|
|
tions both inside and outside the US.
|
|
|
|
Some compiled versions of unzip may not support decryp-
|
|
tion. To check a version for crypt support, either
|
|
attempt to test or extract an encrypted archive, or else
|
|
check unzip's diagnostic screen (see the -v option above)
|
|
for ``[decryption]'' as one of the special compilation
|
|
options.
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 10
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
As noted above, the -P option may be used to supply a
|
|
password on the command line, but at a cost in security.
|
|
The preferred decryption method is simply to extract nor-
|
|
mally; if a zipfile member is encrypted, unzip will prompt
|
|
for the password without echoing what is typed. unzip
|
|
continues to use the same password as long as it appears
|
|
to be valid, by testing a 12-byte header on each file.
|
|
The correct password will always check out against the
|
|
header, but there is a 1-in-256 chance that an incorrect
|
|
password will as well. (This is a security feature of the
|
|
PKWARE zipfile format; it helps prevent brute-force
|
|
attacks that might otherwise gain a large speed advantage
|
|
by testing only the header.) In the case that an incor-
|
|
rect password is given but it passes the header test any-
|
|
way, either an incorrect CRC will be generated for the
|
|
extracted data or else unzip will fail during the extrac-
|
|
tion because the ``decrypted'' bytes do not constitute a
|
|
valid compressed data stream.
|
|
|
|
If the first password fails the header check on some file,
|
|
unzip will prompt for another password, and so on until
|
|
all files are extracted. If a password is not known,
|
|
entering a null password (that is, just a carriage return
|
|
or ``Enter'') is taken as a signal to skip all further
|
|
prompting. Only unencrypted files in the archive(s) will
|
|
thereafter be extracted. (In fact, that's not quite true;
|
|
older versions of zip(1L) and zipcloak(1L) allowed null
|
|
passwords, so unzip checks each encrypted file to see if
|
|
the null password works. This may result in ``false posi-
|
|
tives'' and extraction errors, as noted above.)
|
|
|
|
Archives encrypted with 8-bit passwords (for example,
|
|
passwords with accented European characters) may not be
|
|
portable across systems and/or other archivers. This
|
|
problem stems from the use of multiple encoding methods
|
|
for such characters, including Latin-1 (ISO 8859-1) and
|
|
OEM code page 850. DOS PKZIP 2.04g uses the OEM code
|
|
page; Windows PKZIP 2.50 uses Latin-1 (and is therefore
|
|
incompatible with DOS PKZIP); Info-ZIP uses the OEM code
|
|
page on DOS, OS/2 and Win3.x ports but Latin-1 everywhere
|
|
else; and Nico Mak's WinZip 6.x does not allow 8-bit pass-
|
|
words at all. UnZip 5.3 (or newer) attempts to use the
|
|
default character set first (e.g., Latin-1), followed by
|
|
the alternate one (e.g., OEM code page) to test passwords.
|
|
On EBCDIC systems, if both of these fail, EBCDIC encoding
|
|
will be tested as a last resort. (EBCDIC is not tested on
|
|
non-EBCDIC systems, because there are no known archivers
|
|
that encrypt using EBCDIC encoding.) ISO character encod-
|
|
ings other than Latin-1 are not supported.
|
|
|
|
EXAMPLES
|
|
To use unzip to extract all members of the archive let-
|
|
ters.zip into the current directory and subdirectories
|
|
below it, creating any subdirectories as necessary:
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 11
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
unzip letters
|
|
|
|
To extract all members of letters.zip into the current
|
|
directory only:
|
|
|
|
unzip -j letters
|
|
|
|
To test letters.zip, printing only a summary message indi-
|
|
cating whether the archive is OK or not:
|
|
|
|
unzip -tq letters
|
|
|
|
To test all zipfiles in the current directory, printing
|
|
only the summaries:
|
|
|
|
unzip -tq \*.zip
|
|
|
|
(The backslash before the asterisk is only required if the
|
|
shell expands wildcards, as in Unix; double quotes could
|
|
have been used instead, as in the source examples
|
|
below.) To extract to standard output all members of let-
|
|
ters.zip whose names end in .tex, auto-converting to the
|
|
local end-of-line convention and piping the output into
|
|
more(1):
|
|
|
|
unzip -ca letters \*.tex | more
|
|
|
|
To extract the binary file paper1.dvi to standard output
|
|
and pipe it to a printing program:
|
|
|
|
unzip -p articles paper1.dvi | dvips
|
|
|
|
To extract all FORTRAN and C source files--*.f, *.c, *.h,
|
|
and Makefile--into the /tmp directory:
|
|
|
|
unzip source.zip "*.[fch]" Makefile -d /tmp
|
|
|
|
(the double quotes are necessary only in Unix and only if
|
|
globbing is turned on). To extract all FORTRAN and C
|
|
source files, regardless of case (e.g., both *.c and *.C,
|
|
and any makefile, Makefile, MAKEFILE or similar):
|
|
|
|
unzip -C source.zip "*.[fch]" makefile -d /tmp
|
|
|
|
To extract any such files but convert any uppercase MS-DOS
|
|
or VMS names to lowercase and convert the line-endings of
|
|
all of the files to the local standard (without respect to
|
|
any files that might be marked ``binary''):
|
|
|
|
unzip -aaCL source.zip "*.[fch]" makefile -d /tmp
|
|
|
|
To extract only newer versions of the files already in the
|
|
current directory, without querying (NOTE: be careful of
|
|
unzipping in one timezone a zipfile created in
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 12
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
another--ZIP archives other than those created by Zip 2.1
|
|
or later contain no timezone information, and a ``newer''
|
|
file from an eastern timezone may, in fact, be older):
|
|
|
|
unzip -fo sources
|
|
|
|
To extract newer versions of the files already in the cur-
|
|
rent directory and to create any files not already there
|
|
(same caveat as previous example):
|
|
|
|
unzip -uo sources
|
|
|
|
To display a diagnostic screen showing which unzip and
|
|
zipinfo options are stored in environment variables,
|
|
whether decryption support was compiled in, the compiler
|
|
with which unzip was compiled, etc.:
|
|
|
|
unzip -v
|
|
|
|
In the last five examples, assume that UNZIP or UNZIP_OPTS
|
|
is set to -q. To do a singly quiet listing:
|
|
|
|
unzip -l file.zip
|
|
|
|
To do a doubly quiet listing:
|
|
|
|
unzip -ql file.zip
|
|
|
|
(Note that the ``.zip'' is generally not necessary.) To
|
|
do a standard listing:
|
|
|
|
unzip --ql file.zip
|
|
or
|
|
unzip -l-q file.zip
|
|
or
|
|
unzip -l--q file.zip
|
|
(Extra minuses in options don't hurt.)
|
|
|
|
TIPS
|
|
The current maintainer, being a lazy sort, finds it very
|
|
useful to define a pair of aliases: tt for ``unzip -tq''
|
|
and ii for ``unzip -Z'' (or ``zipinfo''). One may then
|
|
simply type ``tt zipfile'' to test an archive, something
|
|
that is worth making a habit of doing. With luck unzip
|
|
will report ``No errors detected in compressed data of
|
|
zipfile.zip,'' after which one may breathe a sigh of
|
|
relief.
|
|
|
|
The maintainer also finds it useful to set the UNZIP envi-
|
|
ronment variable to ``-aL'' and is tempted to add ``-C''
|
|
as well. His ZIPINFO variable is set to ``-z''.
|
|
|
|
DIAGNOSTICS
|
|
The exit status (or error level) approximates the exit
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 13
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
codes defined by PKWARE and takes on the following values,
|
|
except under VMS:
|
|
|
|
0 normal; no errors or warnings detected.
|
|
|
|
1 one or more warning errors were encountered,
|
|
but processing completed successfully any-
|
|
way. This includes zipfiles where one or
|
|
more files was skipped due to unsupported
|
|
compression method or encryption with an
|
|
unknown password.
|
|
|
|
2 a generic error in the zipfile format was
|
|
detected. Processing may have completed
|
|
successfully anyway; some broken zipfiles
|
|
created by other archivers have simple work-
|
|
arounds.
|
|
|
|
3 a severe error in the zipfile format was
|
|
detected. Processing probably failed imme-
|
|
diately.
|
|
|
|
4 unzip was unable to allocate memory for one
|
|
or more buffers during program initializa-
|
|
tion.
|
|
|
|
5 unzip was unable to allocate memory or
|
|
unable to obtain a tty to read the decryp-
|
|
tion password(s).
|
|
|
|
6 unzip was unable to allocate memory during
|
|
decompression to disk.
|
|
|
|
7 unzip was unable to allocate memory during
|
|
in-memory decompression.
|
|
|
|
8 [currently not used]
|
|
|
|
9 the specified zipfiles were not found.
|
|
|
|
10 invalid options were specified on the com-
|
|
mand line.
|
|
|
|
11 no matching files were found.
|
|
|
|
50 the disk is (or was) full during extraction.
|
|
|
|
51 the end of the ZIP archive was encountered
|
|
prematurely.
|
|
|
|
80 the user aborted unzip prematurely with con-
|
|
trol-C (or similar)
|
|
|
|
81 testing or extraction of one or more files
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 14
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
failed due to unsupported compression meth-
|
|
ods or unsupported decryption.
|
|
|
|
82 no files were found due to bad decryption
|
|
password(s). (If even one file is success-
|
|
fully processed, however, the exit status is
|
|
1.)
|
|
|
|
VMS interprets standard Unix (or PC) return values as
|
|
other, scarier-looking things, so unzip instead maps them
|
|
into VMS-style status codes. The current mapping is as
|
|
follows: 1 (success) for normal exit, 0x7fff0001 for
|
|
warning errors, and (0x7fff000? + 16*nor-
|
|
mal_unzip_exit_status) for all other errors, where the `?'
|
|
is 2 (error) for unzip values 2, 9-11 and 80-82, and 4
|
|
(fatal error) for the remaining ones (3-8, 50, 51). In
|
|
addition, there is a compilation option to expand upon
|
|
this behavior: defining RETURN_CODES results in a human-
|
|
readable explanation of what the error status means.
|
|
|
|
BUGS
|
|
Multi-part archives are not yet supported, except in con-
|
|
junction with zip. (All parts must be concatenated
|
|
together in order, and then ``zip -F'' must be performed
|
|
on the concatenated archive in order to ``fix'' it.) This
|
|
will definitely be corrected in the next major release.
|
|
|
|
Archives read from standard input are not yet supported,
|
|
except with funzip (and then only the first member of the
|
|
archive can be extracted).
|
|
|
|
Archives encrypted with 8-bit passwords (e.g., passwords
|
|
with accented European characters) may not be portable
|
|
across systems and/or other archivers. See the discussion
|
|
in DECRYPTION above.
|
|
|
|
unzip's -M (``more'') option is overly simplistic in its
|
|
handling of screen output; as noted above, it fails to
|
|
detect the wrapping of long lines and may thereby cause
|
|
lines at the top of the screen to be scrolled off before
|
|
being read. unzip should detect and treat each occurrence
|
|
of line-wrap as one additional line printed. This
|
|
requires knowledge of the screen's width as well as its
|
|
height. In addition, unzip should detect the true screen
|
|
geometry on all systems.
|
|
|
|
Dates, times and permissions of stored directories are not
|
|
restored except under Unix.
|
|
|
|
[MS-DOS] When extracting or testing files from an archive
|
|
on a defective floppy diskette, if the ``Fail'' option is
|
|
chosen from DOS's ``Abort, Retry, Fail?'' message, older
|
|
versions of unzip may hang the system, requiring a reboot.
|
|
This problem appears to be fixed, but control-C (or
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 15
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
control-Break) can still be used to terminate unzip.
|
|
|
|
Under DEC Ultrix, unzip would sometimes fail on long zip-
|
|
files (bad CRC, not always reproducible). This was appar-
|
|
ently due either to a hardware bug (cache memory) or an
|
|
operating system bug (improper handling of page faults?).
|
|
Since Ultrix has been abandoned in favor of Digital Unix
|
|
(OSF/1), this may not be an issue anymore.
|
|
|
|
[Unix] Unix special files such as FIFO buffers (named
|
|
pipes), block devices and character devices are not
|
|
restored even if they are somehow represented in the zip-
|
|
file, nor are hard-linked files relinked. Basically the
|
|
only file types restored by unzip are regular files,
|
|
directories and symbolic (soft) links.
|
|
|
|
[OS/2] Extended attributes for existing directories are
|
|
only updated if the -o (``overwrite all'') option is
|
|
given. This is a limitation of the operating system;
|
|
because directories only have a creation time associated
|
|
with them, unzip has no way to determine whether the
|
|
stored attributes are newer or older than those on disk.
|
|
In practice this may mean a two-pass approach is required:
|
|
first unpack the archive normally (with or without fresh-
|
|
ening/updating existing files), then overwrite just the
|
|
directory entries (e.g., ``unzip -o foo */'').
|
|
|
|
[VMS] When extracting to another directory, only the
|
|
[.foo] syntax is accepted for the -d option; the simple
|
|
Unix foo syntax is silently ignored (as is the less common
|
|
VMS foo.dir syntax).
|
|
|
|
[VMS] When the file being extracted already exists,
|
|
unzip's query only allows skipping, overwriting or renam-
|
|
ing; there should additionally be a choice for creating a
|
|
new version of the file. In fact, the ``overwrite''
|
|
choice does create a new version; the old version is not
|
|
overwritten or deleted.
|
|
|
|
SEE ALSO
|
|
funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zip-
|
|
info(1L), zipnote(1L), zipsplit(1L)
|
|
|
|
URL
|
|
The Info-ZIP home page is currently at
|
|
http://www.info-zip.org/pub/infozip/
|
|
or
|
|
ftp://ftp.info-zip.org/pub/infozip/ .
|
|
|
|
AUTHORS
|
|
The primary Info-ZIP authors (current semi-active members
|
|
of the Zip-Bugs workgroup) are: Greg ``Cave Newt''
|
|
Roelofs (UnZip); Onno van der Linden (Zip); Jean-loup
|
|
Gailly (compression); Mark Adler (decompression, fUnZip);
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 16
|
|
|
|
UNZIP(1L) UNZIP(1L)
|
|
|
|
Christian Spieler (UnZip maintance coordination, VMS, MS-
|
|
DOS, Windows 95, NT, shared code, general Zip and UnZip
|
|
integration and optimization); Mike White (Windows GUI,
|
|
Windows DLLs); Kai Uwe Rommel (OS/2); Paul Kienitz (Amiga,
|
|
Windows 95); Chris Herborth (BeOS, QNX, Atari); Jonathan
|
|
Hudson (SMS/QDOS); Sergio Monesi (Acorn RISC OS); Harald
|
|
Denker (Atari, MVS); John Bush (Solaris, Amiga); Hunter
|
|
Goatley (VMS); Steve Salisbury (Windows 95, NT); Steve
|
|
Miller (Windows CE GUI), Johnny Lee (MS-DOS, Windows 95,
|
|
NT); and Dave Smith (Tandem NSK). The author of the orig-
|
|
inal unzip code upon which Info-ZIP's was based is Samuel
|
|
H. Smith; Carl Mascott did the first Unix port; and David
|
|
P. Kirschbaum organized and led Info-ZIP in its early
|
|
days with Keith Petersen hosting the original mailing list
|
|
at WSMR-SimTel20. The full list of contributors to UnZip
|
|
has grown quite large; please refer to the CONTRIBS file
|
|
in the UnZip source distribution for a relatively complete
|
|
version.
|
|
|
|
VERSIONS
|
|
v1.2 15 Mar 89 Samuel H. Smith
|
|
v2.0 9 Sep 89 Samuel H. Smith
|
|
v2.x fall 1989 many Usenet contributors
|
|
v3.0 1 May 90 Info-ZIP (DPK, consolidator)
|
|
v3.1 15 Aug 90 Info-ZIP (DPK, consolidator)
|
|
v4.0 1 Dec 90 Info-ZIP (GRR, maintainer)
|
|
v4.1 12 May 91 Info-ZIP
|
|
v4.2 20 Mar 92 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.0 21 Aug 92 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.01 15 Jan 93 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.1 7 Feb 94 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.11 2 Aug 94 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.12 28 Aug 94 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.2 30 Apr 96 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.3 22 Apr 97 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.31 31 May 97 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.32 3 Nov 97 Info-ZIP (Zip-Bugs subgroup, GRR)
|
|
v5.4 28 Nov 98 Info-ZIP (Zip-Bugs subgroup, SPC)
|
|
v5.41 16 Apr 00 Info-ZIP (Zip-Bugs subgroup, SPC)
|
|
v5.42 14 Jan 01 Info-ZIP (Zip-Bugs subgroup, SPC)
|
|
v5.5 17 Feb 02 Info-ZIP (Zip-Bugs subgroup, SPC)
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 17
|
|
|