UUENCODE(1C) Communication Commands UUENCODE(1C)
NAME
uuencode, uudecode - encode a binary file, or decode its encoded
representation
SYNOPSIS
uuencode [
source-file]
decode_pathname uuencode [
-m] [
source-file]
decode_pathname uudecode [
-p] [
encoded-file]
uudecode [
-o outfile] [
encoded-file]
DESCRIPTION
These commands encode and decode files as follows:
uuencode The
uuencode utility converts a binary file into an encoded
representation that can be sent using
mail(1). It encodes the
contents of
source-file, or the standard input if no
source-file argument is given. The
decode_pathname argument is required. The
decode_pathname is included in the encoded file's header as the name
of the file into which
uudecode is to place the binary (decoded)
data.
uuencode also includes the permission modes of
source-file (except
setuid,
setgid, and sticky-bits), so that
decode_pathname is
recreated with those same permission modes.
uudecode The
uudecode utility reads an
encoded-file, strips off any leading
and trailing lines added by mailer programs, and recreates the
original binary data with the filename and the mode specified in the
header.
The encoded file is an ordinary portable character set text file; it
can be edited by any text editor. It is best only to change the mode
or
decode_pathname in the header to avoid corrupting the decoded
binary.
OPTIONS
The following options are supported:
uuencode -m Encodes
source-file using Base64 encoding and sends it to
standard output.
uudecode -o outfile Specifies a file pathname that should be used instead
of any pathname contained in the input data. Specifying
an
outfile option-argument of
/dev/stdout indicates
standard output.This allows
uudecode to be used in a
pipeline.
-p Decodes
encoded-file and sends it to standard output.
This allows
uudecode to be used in a pipeline.
OPERANDS
The following operands are supported by
uuencode and
uudecode:
uuencode decode_pathname The pathname of the file into which the
uudecode utility will place the decoded file. If there are
characters in
decode_pathname that are not in the
portable filename character set, the results are
unspecified.
source-file A pathname of the file to be encoded.
uudecode encoded-file The pathname of a file containing the output of
uuencode.
USAGE
See
largefile(7) for the description of the behavior of
uuencode and
uudecode when encountering files greater than or equal to 2 Gbyte (
2^31 bytes).
ENVIRONMENT VARIABLES
See
environ(7) for descriptions of the following environment
variables that affect the execution of
uuencode and
uudecode:
LANG,
LC_ALL,
LC_CTYPE,
LC_MESSAGES, and
NLSPATH.
OUTPUT
stdout
uuencode Base64 Algorithm The standard output is a text file, encoded in the character set of
the current locale, that begins with the line:
begin-base64 %s %s\n,
mode,
decode_pathname and ends with the line:
====
In both cases, the lines have no preceding or trailing blank
characters.
The encoding process represents 24-bit groups of input bits as output
strings of four encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating three 8-bit input
groups. Each 24-bit input group is then treated as four concatenated
6-bit groups, each of which is translated into a single digit in the
Base64 alphabet. When encoding a bit stream by means of the Base64
encoding, the bit stream is presumed to be ordered with the most-
significant bit first. That is, the first bit in the stream is the
high-order bit in the first byte, and the eighth bit is the low-order
bit in the first byte, and so on. Each 6-bit group is used as an
index into an array of 64 printable characters, as shown in the
following table.
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
The character referenced by the index is placed in the output string.
The output stream (encoded bytes) is represented in lines of no more
than 76 characters each. All line breaks or other characters not
found in the table are ignored by decoding software (see
uudecode).
Special processing is performed if fewer than 24 bits are available
at the end of a message or encapsulated part of a message. A full
encoding quantum is always completed at the end of a message. When
fewer than 24 input bits are available in an input group, zero bits
are added on the right to form an integral number of 6-bit groups.
Output character positions that are not required to represent actual
input data are set to the equals (
=) character. Since all Base64
input is an integral number of octets, only the following cases can
arise:
1. The final quantum of encoding input is an integral
multiple of 24 bits. Here, the final unit of encoded
output is an integral multiple of four characters with no
'
= ' padding.
2. The final quantum of encoding input is exactly 16 bits.
Here, the final unit of encoded output is three characters
followed by one '
=' padding character.
3. The final quantum of encoding input is exactly 8 bits.
Here, the final unit of encoded output is two characters
followed by two '
=' padding characters.
A terminating "
====" evaluates to nothing and denotes the end of the
encoded data.
uuencode Historical Algorithm The standard output is a text file (encoded in the character set of
the current locale) that begins with the line:
begin %s %s\n,
mode,
decode_pathname and ends with the line:
end\n
In both cases, the lines have no preceding or trailing blank
characters.
The algorithm that is used for lines between
begin and
end takes
three octets as input and writes four characters of output by
splitting the input at six-bit intervals into four octets, containing
data in the lower six bits only. These octets are converted to
characters by adding a value of
0x20 to each octet, so that each
octet is in the range
0x20-0x5f, and each octet is assumed to
represent a printable character. Each octect is then translated into
the corresponding character codes for the codeset in use in the
current locale. For example, the octet
0x41, representing '
A', would
be translated to '
A' in the current codeset, such as
0xc1 if the
codeset were
EBCDIC.
Where the bits of two octets are combined, the least significant bits
of the first octet are shifted left and combined with the most
significant bits of the second octet shifted right. Thus, the three
octets
A,
B,
C are converted into the four octets:
0x20 + (( A >> 2 ) & 0x3F)
0x20 + (((A << 4) ((B >> 4) & 0xF)) & 0x3F)
0x20 + (((B << 2) ((C >> 6) & 0x3)) & 0x3F)
0x20 + (( C ) & 0x3F)
These octets are then translated into the local character set.
Each encoded line contains a length character, equal to the number of
characters to be decoded plus
0x20 translated to the local character
set as described above, followed by the encoded characters. The
maximum number of octets to be encoded on each line is 45.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
mail(1),
mailx(1),
uucp(1C),
uux(1C),
attributes(7),
environ(7),
largefile(7),
standards(7)NOTES
The size of the encoded file is expanded by 35% (3 bytes become 4,
plus control information), causing it to take longer to transmit than
the equivalent binary.
The user on the remote system who is invoking
uudecode (typically
uucp) must have write permission on the file specified in the
decode_pathname.
If you invoke
uuencode and then execute
uudecode on a file in the
same directory, you will overwrite the original file.
September 10, 2013 UUENCODE(1C)