---
name: "funzip"
section: "1"
platform: "macos"
package: "zip"
version: "33"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/funzip"
---

# funzip(1)

filter for extracting from a ZIP archive in a pipe

## NAME

funzip - filter for extracting from a ZIP archive in a pipe

## SYNOPSIS

**funzip** \[**-password**\] \[*input\[.zip\|.gz\]*\]

## ARGUMENTS

- \[*-password*\]

  Optional password to be used if ZIP archive is encrypted.  Decryption may not be supported at some sites.  See DESCRIPTION for more details.

- \[*input\[.zip\|.gz\]*\]

  Optional input archive file specification. See DESCRIPTION for details.

## DESCRIPTION

*funzip* without a file argument acts as a filter; that is, it assumes that a ZIP archive (or a *gzip*'d(1) file) is being piped into standard input, and it extracts the first member from the archive to stdout. When stdin comes from a tty device, *funzip* assumes that this cannot be a stream of (binary) compressed data and shows a short help text, instead. If there is a file argument, then input is read from the specified file instead of from stdin.

A password for encrypted zip files can be specified on the command line (preceding the file name, if any) by prefixing the password with a dash.  Note that this constitutes a security risk on many systems; currently running processes are often visible via simple commands (e.g., [*ps*(1)](/ps/1.md) under Unix), and command-line histories can be read. If the first entry of the zip file is encrypted and no password is specified on the command line, then the user is prompted for a password and the password is not echoed on the console.

Given the limitation on single-member extraction, *funzip* is most useful in conjunction with a secondary archiver program such as [*tar*(1)](/tar/1.md). The following section includes an example illustrating this usage in the case of disk backups to tape.

## EXAMPLES

To use *funzip* to extract the first member file of the archive test.zip and to pipe it into [*more*(1)](/more/1.md):

```
funzip test.zip | more
```

To use *funzip* to test the first member file of test.zip (any errors will be reported on standard error):

```
funzip test.zip > /dev/null
```

To use *zip* and *funzip* in place of [*compress*(1)](/compress/1.md) and [*zcat*(1)](/zcat/1.md) (or *gzip*(1L) and *gzcat*(1L)) for tape backups:

```
tar cf - . | zip -7 | dd of=/dev/nrst0 obs=8k
dd if=/dev/nrst0 ibs=8k | funzip | tar xf -
```

(where, for example, nrst0 is a SCSI tape drive).

## BUGS

When piping an encrypted file into *more* and allowing *funzip* to prompt for password, the terminal may sometimes be reset to a non-echo mode.  This is apparently due to a race condition between the two programs; *funzip* changes the terminal mode to non-echo before *more* reads its state, and *more* then \`\`restores'' the terminal to this mode before exiting.  To recover, run *funzip* on the same file but redirect to /dev/null rather than piping into more; after prompting again for the password, *funzip* will reset the terminal properly.

There is presently no way to extract any member but the first from a ZIP archive.  This would be useful in the case where a ZIP archive is included within another archive.  In the case where the first member is a directory, *funzip* simply creates the directory and exits.

The functionality of *funzip* should be incorporated into *unzip* itself (future release).

## SEE ALSO

*gzip*(1L), *unzip*(1L), *unzipsfx*(1L), *zip*(1L), *zipcloak*(1L), *zipinfo*(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/ .
```

## AUTHOR

Mark Adler (Info-ZIP)
