dd - convert and copy a file
Synopsis
Description
Environment Variables
Examples
See Also
Diagnostics
Notes
dd [option=value] ...
Dd copies the specified input file to the specified output with possible conversions. The standard input and output are used by default. The input and output block size may be specified to take advantage of raw physical I/O.
option values if= input file name; standard input is default of= output file name; standard output is default ibs=n input block size n bytes (default 512) obs=n output block size (default 512) bs=n set both input and output block size, superseding ibs and obs; also, if no conversion is specified, it is particularly efficient since no copy need be done cbs=n conversion buffer size skip=n skip n input records before starting copy iseek=n seek n input records before starting copy files=n copy n files from (tape) input seek=n seek n records from beginning of output file before copying oseek=n same as seek count=n copy only n input records conv=ascii convert EBCDIC to ASCII ebcdic convert ASCII to EBCDIC ibm slightly different map of ASCII to EBCDIC block convert newline-terminated input lines to blocks unblock convert blocked input to lines lcase map alphabetics to lower case ucase map alphabetics to upper case swab swap every pair of bytes noerror do not stop processing on an error notrunc do not truncate the output file sync pad every input record to ibs ... , ... several comma-separated conversions Where sizes are specified, a number of bytes is expected. A number may end with k, b or w to specify multiplication by 1024, 512, or 2 respectively; a pair of numbers may be separated by x to indicate a product.
Cbs is used only if ascii, unblock, ebcdic, ibm, or block conversion is specified. In the first two cases, cbs bytes are placed into the conversion buffer, converted to ASCII, and trailing blanks trimmed and new-line added before sending the line to the output. In the latter three cases, ASCII characters (bytes) are read into the conversion buffer, converted to EBCDIC, and blanks added to make up an output record of size cbs.
Two additional values for the 'conv' option, 'conv=idirect' and 'conv=odirect', are available as extensions. They enable direct i/o on input or output, respectively. See the description of the 'O_DIRECT' flag in open(2) for more information. 'conv=odirect' must be used with care as it requires padding for correct operation; a write that is not a multiple of an acceptable buffer size will fail. This is particularly of concern for the last block written. Using 'conv=odirect' thus usually requires 'conv=sync' and cannot be used if such padding destroys the file integrity.
After completion, dd reports the number of whole and partial input and output blocks.
LANG, LC_ALL See locale(7). LC_CTYPE Determines the mapping of bytes to characters for 'conv=lcase' and 'conv=ucase'.
To read an EBCDIC tape blocked ten 80-byte EBCDIC card images per record into the ASCII file x:
dd if=/dev/rmt0 of=x ibs=800 cbs=80 conv=ascii,lcase Note the use of raw magtape. Dd is especially suited to I/O on the raw physical devices because it allows reading and writing in arbitrary record sizes. To skip over a file before copying from magnetic tape do (dd of=/dev/null; dd of=x) </dev/rmt0
cp(1), tr(1), locale(7)
f+p records in(out): numbers of full and partial records read(written)
The ASCII/EBCDIC conversion tables are taken from a proposed BTL standard April 16, 1979. The 'ibm' conversion, while less blessed as a standard, corresponds better to certain IBM print train conventions. There is no universal solution.When reading from pipes, FIFOs, character devices (e.g. terminals), or network sockets, partial input records can occur at any time even before the end of the data stream is reached. For the 'count' option, these are handled exactly like full records. Using dd to retrieve exactly count*ibs bytes from such files does thus not generally work unless 'ibs=1'.
Heirloom Toolchest | DD (1) | 1/14/05 |