XXD(1)                                                                  XXD(1)



NAME
       xxd - make a hexdump or do the reverse.

SYNOPSIS
       xxd -h[elp]
       xxd [options] [infile [outfile]]
       xxd -r[evert] [options] [infile [outfile]]

DESCRIPTION
       xxd  creates a hex dump of a given file or standard input.  It can also
       convert a hex dump back to its original binary form.  Like  uuencode(1)
       and  uudecode(1)  it allows the transmission of binary data in a `mail-
       safe' ASCII representation, but has the advantage of decoding to  stan-
       dard output.  Moreover, it can be used to perform binary file patching.

OPTIONS
       If no infile is given, standard input is read.  If infile is  specified
       as  a  `-'  character,  then input is taken from standard input.  If no
       outfile is given (or a `-' character is in its place), results are sent
       to standard output.

       Note  that  a  "lazy" parser is used which does not check for more than
       the first option letter, unless the option is followed by a  parameter.
       Spaces  between  a single option letter and its parameter are optional.
       Parameters to options can be specified in decimal, hexadecimal or octal
       notation.  Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent.


       -a | -autoskip
              toggle  autoskip: A single '*' replaces nul-lines.  Default off.

       -b | -bits
              Switch to bits (binary digits) dump, rather than hexdump.   This
              option  writes octets as eight digits "1"s and "0"s instead of a
              normal hexadecimal dump. Each line is preceded by a line  number
              in  hexadecimal and followed by an ascii (or ebcdic) representa-
              tion. The command line switches -r, -p, -i do not work with this
              mode.

       -c cols | -cols cols
              format  <cols> octets per line. Default 16 (-i: 12, -ps: 30, -b:
              6). Max 256.

       -E | -EBCDIC
              Change the character encoding in the righthand column from ASCII
              to EBCDIC.  This does not change the hexadecimal representation.
              The option is meaningless in combinations with -r, -p or -i.

       -g bytes | -groupsize bytes
              separate the output of every <bytes> bytes (two  hex  characters
              or eight bit-digits each) by a whitespace.  Specify -g 0 to sup-
              press grouping.  <Bytes> defaults to 2 in normal mode and  1  in
              bits  mode.   Grouping  does  not apply to postscript or include
              style.

       -h | -help
              print a summary of available commands and exit.  No hex  dumping
              is performed.

       -i | -include
              output  in C include file style. A complete static array defini-
              tion is written (named after the input file), unless  xxd  reads
              from stdin.

       -l len | -len len
              stop after writing <len> octets.

       -p | -ps | -postscript | -plain
              output  in  postscript  continuous  hexdump style. Also known as
              plain hexdump style.

       -r | -revert
              reverse operation: convert (or patch) hexdump into  binary.   If
              not  writing  to stdout, xxd writes into its output file without
              truncating it. Use the combination -r -p to read plain hexadeci-
              mal dumps without line number information and without a particu-
              lar column layout. Additional  Whitespace  and  line-breaks  are
              allowed anywhere.

       -seek offset
              When used after -r: revert with <offset> added to file positions
              found in hexdump.

       -s [+][-]seek
              start at <seek> bytes abs. (or rel.) infile offset.   +  fRindi-
              cates  that the seek is relative to the current stdin file posi-
              tion (meaningless when not reading  from  stdin).   -  indicates
              that the seek should be that many characters from the end of the
              input (or if combined with +:  before  the  current  stdin  file
              position).   Without  -s  option, xxd starts at the current file
              position.

       -u     use upper case hex letters. Default is lower case.

       -v | -version
              show version string.

CAVEATS
       xxd -r has some builtin magic while evaluating line number information.
       If  the  output  file is seekable, then the linenumbers at the start of
       each hexdump line may be out of order, lines may be missing,  or  over-
       lapping.  In these cases xxd will lseek(2) to the next position. If the
       output file is not seekable, only  gaps  are  allowed,  which  will  be
       filled by null-bytes.

       xxd -r never generates parse errors. Garbage is silently skipped.

       When  editing hexdumps, please note that xxd -r skips everything on the
       input line after reading enough columns of hexadecimal data (see option
       -c).  This  also means, that changes to the printable ascii (or ebcdic)
       columns are always ignored. Reverting a  plain  (or  postscript)  style
       hexdump  with  xxd  -r -p does not depend on the correct number of col-
       umns. Here anything that looks like a  pair  of  hex-digits  is  inter-
       preted.

       Note the difference between
       % xxd -i file
       and
       % xxd -i < file

       xxd  -s +seek may be different from xxd -s seek, as lseek(2) is used to
       "rewind" input.  A '+' makes a difference if the input source is stdin,
       and  if  stdin's  file  position is not at the start of the file by the
       time xxd is started and given its input.  The  following  examples  may
       help to clarify (or further confuse!)...

       Rewind  stdin before reading; needed because the `cat' has already read
       to the end of stdin.
       % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file

       Hexdump from file position 0x480 (=1024+128)  onwards.   The  `+'  sign
       means "relative to the current position", thus the `128' adds to the 1k
       where dd left off.
       % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 >  hex_snippet"
       < file

       Hexdump from file position 0x100 ( = 1024-768) on.
       % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet"
       < file

       However, this is a rare situation and the use of `+' is rarely  needed.
       The  author  prefers  to  monitor  the  effect of xxd with strace(1) or
       truss(1), whenever -s is used.

EXAMPLES
       Print everything but the first three lines (hex 0x30 bytes) of file.
       % xxd -s 0x30 file

       Print 3 lines (hex 0x30 bytes) from the end of file.
       % xxd -s -0x30 file

       Print 120 bytes as continuous hexdump with 40 octets per line.
       % xxd -l 120 -ps -c 20 xxd.1
       2e54482058584420312022417567757374203139
       39362220224d616e75616c207061676520666f72
       20787864220a2e5c220a2e5c222032317374204d
       617920313939360a2e5c22204d616e2070616765
       20617574686f723a0a2e5c2220202020546f6e79
       204e7567656e74203c746f6e79407363746e7567

       Hexdump the first 120 bytes of this man page with 12 octets per line.
       % xxd -l 120 -c 12 xxd.1
       0000000: 2e54 4820 5858 4420 3120 2241  .TH XXD 1 "A
       000000c: 7567 7573 7420 3139 3936 2220  ugust 1996"
       0000018: 224d 616e 7561 6c20 7061 6765  "Manual page
       0000024: 2066 6f72 2078 7864 220a 2e5c   for xxd"..\
       0000030: 220a 2e5c 2220 3231 7374 204d  "..\" 21st M
       000003c: 6179 2031 3939 360a 2e5c 2220  ay 1996..\"
       0000048: 4d61 6e20 7061 6765 2061 7574  Man page aut
       0000054: 686f 723a 0a2e 5c22 2020 2020  hor:..\"
       0000060: 546f 6e79 204e 7567 656e 7420  Tony Nugent
       000006c: 3c74 6f6e 7940 7363 746e 7567  <tony@sctnug

       Display just the date from the file xxd.1
       % xxd -s 0x36 -l 13 -c 13 xxd.1
       0000036: 3231 7374 204d 6179 2031 3939 36  21st May 1996

       Copy input_file to output_file and prepend 100 bytes of value 0x00.
       % xxd input_file | xxd -r -s 100 > output_file

       Patch the date in the file xxd.1
       % echo "0000037: 3574 68" | xxd -r - xxd.1
       % xxd -s 0x36 -l 13 -c 13 xxd.1
       0000036: 3235 7468 204d 6179 2031 3939 36  25th May 1996

       Create a 65537 byte file with all bytes 0x00, except for the  last  one
       which is 'A' (hex 0x41).
       % echo "010000: 41" | xxd -r > file

       Hexdump this file with autoskip.
       % xxd -a -c 12 file
       0000000: 0000 0000 0000 0000 0000 0000  ............
       *
       000fffc: 0000 0000 40                   ....A

       Create  a  1  byte  file containing a single 'A' character.  The number
       after '-r -s' adds to the linenumbers found in the file; in effect, the
       leading bytes are suppressed.
       % echo "010000: 41" | xxd -r -s -0x10000 > file

       Use xxd as a filter within an editor such as vim(1) to hexdump a region
       marked between `a' and `z'.
       :'a,'z!xxd

       Use xxd as a filter within an editor such as vim(1) to recover a binary
       hexdump marked between `a' and `z'.
       :'a,'z!xxd -r

       Use xxd as a filter within an editor such as vim(1) to recover one line
       of a hexdump.  Move the cursor over the line and type:
       !!xxd -r

       Read single characters from a serial line
       % xxd -c1 < /dev/term/b &
       % stty < /dev/term/b -echo -opost -isig -icanon min 1
       % echo -n foo > /dev/term/b


RETURN VALUES
       The following error values are returned:

       0      no errors encountered.

       -1     operation not supported ( xxd -r -i still impossible).

       1      error while parsing options.

       2      problems with input file.

       3      problems with output file.

       4,5    desired seek position is unreachable.

SEE ALSO
       uuencode(1), uudecode(1), patch(1)

WARNINGS
       The tools weirdness matches its creators brain.  Use entirely  at  your
       own risk. Copy files. Trace it. Become a wizard.

VERSION
       This manual page documents xxd version 1.7

AUTHOR
       (c) 1990-1997 by Juergen Weigert
       <jnweiger@informatik.uni-erlangen.de>

       Distribute freely and credit me,
       make money and share with me,
       lose money and don't ask me.

       Manual page started by Tony Nugent
       <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
       Small changes by Bram Moolenaar.  Edited by Juergen Weigert.




Manual page for xxd               August 1996                           XXD(1)
