guncat - unencrypting file concatenation



guncat - catenates files, unencrypting pgp encrypted sections


guncat [OPTIONS] [file(s)]
[OPTIONS] - cf. section OPTIONS
[file(s)] - optional files to process (cf. section INPUT FILE(S))


Guncat was designed to tackle a problem encountered with (partially) PGP encrypted files (which may exist in, e.g., mailboxes). Tools to process text-files (like grep(1), or less(1)) may be used to process those files, but those tools leave PGP encrypted sections inside such files as-is. As a consequence, browsing the `real' contents (i.e., clear-text sections and the unencrypted content of PGP encrypted sections) of those files is difficult.

Guncat acts comparably to cat, but unencrypts encrypted sections encountered in the files processed by guncat, copying the unencrypted information to guncat's standard output stream, which may thereupon be processed by other tools.

PGP/GPG encrypted sections are surrounded by the following markers:




When guncat encounters such sections they are processed by gpg(1). Gpg needs a passphrase to unencrypt such sections. If not already available (from gpg-agent(1)) the required passphrase is requested by guncat, whereafter it is used by gpg.

When an incorrect passphrase is entered two additional attempts to provide the correct passphrase are allowed. If the third attempt also fails, guncat terminates. Files processed by guncat may have to be repositioned. If repositioning is not supported guncat terminated with an error message.


Guncat returns 0 to the operating system unless an error occurs (0 is also returned when the option --gpg-command is specified). 1 is returned if gpg could not decrypt an encrypted section or if guncat is started without arguments or options


When no file arguments are provided input may be provided using standard input stream redirection.

When option --passphrase is specified the first line of the first file that is processed is read as the passphrase to be used. This line is ignored if gpg-agent already can provide the correct passphrase. Otherwise, when a thus specified passphrase is incorrect, guncat terminates.

Any other argument is considered a filename (path specifications are allowed) specifying a file to be processed (in sequence) by guncat.

If a file cannot be read guncat terminates with an error message.


In the following overview of options single letter options, when available, are listed between parentheses following their associated long-option alternatives. Single letter options require arguments if their long option alternatives require arguments as well.


gpg(1), gpg-agent(1), grep(1), less(1).


None reported


This is free software, distributed under the terms of the `GNU General Public License'. Copyright remains with the author. Guncat is available at


Frank B. Brokken (