diff options
Diffstat (limited to 'man1p/dd.1p')
-rw-r--r-- | man1p/dd.1p | 588 |
1 files changed, 588 insertions, 0 deletions
diff --git a/man1p/dd.1p b/man1p/dd.1p new file mode 100644 index 000000000..3a40d4682 --- /dev/null +++ b/man1p/dd.1p @@ -0,0 +1,588 @@ +.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved +.TH "DD" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" dd +.SH NAME +dd \- convert and copy a file +.SH SYNOPSIS +.LP +\fBdd\fP \fB[\fP\fIoperand\fP \fB...\fP\fB]\fP +.SH DESCRIPTION +.LP +The \fIdd\fP utility shall copy the specified input file to the specified +output file with possible conversions using specific +input and output block sizes. It shall read the input one block at +a time, using the specified input block size; it shall then +process the block of data actually returned, which could be smaller +than the requested block size. It shall apply any conversions +that have been specified and write the resulting data to the output +in blocks of the specified output block size. If the \fBbs\fP= +\fIexpr\fP operand is specified and no conversions other than \fBsync\fP, +\fBnoerror\fP, or \fBnotrunc\fP are requested, the +data returned from each input block shall be written as a separate +output block; if the read returns less than a full block and the +\fBsync\fP conversion is not specified, the resulting output block +shall be the same size as the input block. If the \fBbs\fP= +\fIexpr\fP operand is not specified, or a conversion other than \fBsync\fP, +\fBnoerror\fP, or \fBnotrunc\fP is requested, the +input shall be processed and collected into full-sized output blocks +until the end of the input is reached. +.LP +The processing order shall be as follows: +.IP " 1." 4 +An input block is read. +.LP +.IP " 2." 4 +If the input block is shorter than the specified input block size +and the \fBsync\fP conversion is specified, null bytes shall +be appended to the input data up to the specified size. (If either +\fBblock\fP or \fBunblock\fP is also specified, <space>s +shall be appended instead of null bytes.) The remaining conversions +and output shall include the pad characters as if they had been +read from the input. +.LP +.IP " 3." 4 +If the \fBbs\fP= \fIexpr\fP operand is specified and no conversion +other than \fBsync\fP or \fBnoerror\fP is requested, the +resulting data shall be written to the output as a single block, and +the remaining steps are omitted. +.LP +.IP " 4." 4 +If the \fBswab\fP conversion is specified, each pair of input data +bytes shall be swapped. If there is an odd number of bytes +in the input block, the last byte in the input record shall not be +swapped. +.LP +.IP " 5." 4 +Any remaining conversions ( \fBblock\fP, \fBunblock\fP, \fBlcase\fP, +and \fBucase\fP) shall be performed. These conversions +shall operate on the input data independently of the input blocking; +an input or output fixed-length record may span block +boundaries. +.LP +.IP " 6." 4 +The data resulting from input or conversion or both shall be aggregated +into output blocks of the specified size. After the end +of input is reached, any remaining output shall be written as a block +without padding if \fBconv\fP= \fBsync\fP is not specified; +thus, the final output block may be shorter than the output block +size. +.LP +.SH OPTIONS +.LP +None. +.SH OPERANDS +.LP +All of the operands shall be processed before any input is read. The +following operands shall be supported: +.TP 7 +\fBif\fP=\fIfile\fP +Specify the input pathname; the default is standard input. +.TP 7 +\fBof\fP=\fIfile\fP +Specify the output pathname; the default is standard output. If the +\fBseek\fP= \fIexpr\fP conversion is not also specified, +the output file shall be truncated before the copy begins if an explicit +\fBof\fP= \fIfile\fP operand is specified, unless +\fBconv\fP= \fBnotrunc\fP is specified. If \fBseek\fP= \fIexpr\fP +is specified, but \fBconv\fP= \fBnotrunc\fP is not, the +effect of the copy shall be to preserve the blocks in the output file +over which \fIdd\fP seeks, but no other portion of the +output file shall be preserved. (If the size of the seek plus the +size of the input file is less than the previous size of the +output file, the output file shall be shortened by the copy.) +.TP 7 +\fBibs\fP=\fIexpr\fP +Specify the input block size, in bytes, by \fIexpr\fP (default is +512). +.TP 7 +\fBobs\fP=\fIexpr\fP +Specify the output block size, in bytes, by \fIexpr\fP (default is +512). +.TP 7 +\fBbs\fP=\fIexpr\fP +Set both input and output block sizes to \fIexpr\fP bytes, superseding +\fBibs\fP= and \fBobs\fP=. If no conversion other +than \fBsync\fP, \fBnoerror\fP, and \fBnotrunc\fP is specified, each +input block shall be copied to the output as a single block +without aggregating short blocks. +.TP 7 +\fBcbs\fP=\fIexpr\fP +Specify the conversion block size for \fBblock\fP and \fBunblock\fP +in bytes by \fIexpr\fP (default is zero). If \fBcbs\fP= +is omitted or given a value of zero, using \fBblock\fP or \fBunblock\fP +produces unspecified results. +.LP +The application shall ensure that this operand is also specified if +the \fBconv\fP= operand is specified with a value of +\fBascii\fP, \fBebcdic\fP, or \fBibm\fP. For a \fBconv\fP= operand +with an \fBascii\fP value, the input is handled as +described for the \fBunblock\fP value, except that characters are +converted to ASCII before any trailing <space>s are +deleted. For \fBconv\fP= operands with \fBebcdic\fP or \fBibm\fP values, +the input is handled as described for the \fBblock\fP +value except that the characters are converted to EBCDIC or IBM EBCDIC, +respectively, after any trailing <space>s are added. +.TP 7 +\fBskip\fP=\fIn\fP +Skip \fIn\fP input blocks (using the specified input block size) before +starting to copy. On seekable files, the +implementation shall read the blocks or seek past them; on non-seekable +files, the blocks shall be read and the data shall be +discarded. +.TP 7 +\fBseek\fP=\fIn\fP +Skip \fIn\fP blocks (using the specified output block size) from the +beginning of the output file before copying. On +non-seekable files, existing blocks shall be read and space from the +current end-of-file to the specified offset, if any, filled +with null bytes; on seekable files, the implementation shall seek +to the specified offset or read the blocks as described for +non-seekable files. +.TP 7 +\fBcount\fP=\fIn\fP +Copy only \fIn\fP input blocks. +.TP 7 +\fBconv\fP=\fIvalue\fP\fB[\fP,\fIvalue\fP\ ...\fB]\fP +.sp +Where \fIvalue\fPs are comma-separated symbols from the following +list: +.TP 7 +\fBascii\fP +.RS +Convert EBCDIC to ASCII; see ASCII to EBCDIC Conversion . +.RE +.TP 7 +\fBebcdic\fP +.RS +Convert ASCII to EBCDIC; see ASCII to EBCDIC Conversion . +.RE +.TP 7 +\fBibm\fP +.RS +Convert ASCII to a different EBCDIC set; see ASCII to IBM EBCDIC Conversion +\&. +.RE +.sp +.LP +The \fBascii\fP, \fBebcdic\fP, and \fBibm\fP values are mutually-exclusive. +.TP 7 +\fBblock\fP +.RS +Treat the input as a sequence of <newline>-terminated or end-of-file-terminated +variable-length records independent of +the input block boundaries. Each record shall be converted to a record +with a fixed length specified by the conversion block size. +Any <newline> shall be removed from the input line; <space>s shall +be appended to lines that are shorter than their +conversion block size to fill the block. Lines that are longer than +the conversion block size shall be truncated to the largest +number of characters that fit into that size; the number of truncated +lines shall be reported (see the STDERR section). +.LP +The \fBblock\fP and \fBunblock\fP values are mutually-exclusive. +.RE +.TP 7 +\fBunblock\fP +.RS +Convert fixed-length records to variable length. Read a number of +bytes equal to the conversion block size (or the number of +bytes remaining in the input, if less than the conversion block size), +delete all trailing <space>s, and append a +<newline>. +.RE +.TP 7 +\fBlcase\fP +.RS +Map uppercase characters specified by the \fILC_CTYPE\fP keyword \fBtolower\fP +to the corresponding lowercase character. +Characters for which no mapping is specified shall not be modified +by this conversion. +.LP +The \fBlcase\fP and \fBucase\fP symbols are mutually-exclusive. +.RE +.TP 7 +\fBucase\fP +.RS +Map lowercase characters specified by the \fILC_CTYPE\fP keyword \fBtoupper\fP +to the corresponding uppercase character. +Characters for which no mapping is specified shall not be modified +by this conversion. +.RE +.TP 7 +\fBswab\fP +.RS +Swap every pair of input bytes. +.RE +.TP 7 +\fBnoerror\fP +.RS +Do not stop processing on an input error. When an input error occurs, +a diagnostic message shall be written on standard error, +followed by the current input and output block counts in the same +format as used at completion (see the STDERR section). If the +\fBsync\fP conversion is specified, the missing input shall be replaced +with null bytes and processed normally; otherwise, the +input block shall be omitted from the output. +.RE +.TP 7 +\fBnotrunc\fP +.RS +Do not truncate the output file. Preserve blocks in the output file +not explicitly written by this invocation of the \fIdd\fP +utility. (See also the preceding \fBof\fP= \fIfile\fP operand.) +.RE +.TP 7 +\fBsync\fP +.RS +Pad every input block to the size of the \fBibs\fP= buffer, appending +null bytes. (If either \fBblock\fP or \fBunblock\fP is +also specified, append <space>s, rather than null bytes.) +.RE +.sp +.sp +.LP +The behavior is unspecified if operands other than \fBconv\fP= are +specified more than once. +.LP +For the \fBbs\fP=, \fBcbs\fP=, \fBibs\fP=, and \fBobs\fP= operands, +the application shall supply an expression specifying a +size in bytes. The expression, \fIexpr\fP, can be: +.IP " 1." 4 +A positive decimal number +.LP +.IP " 2." 4 +A positive decimal number followed by \fIk\fP, specifying multiplication +by 1024 +.LP +.IP " 3." 4 +A positive decimal number followed by \fIb\fP, specifying multiplication +by 512 +.LP +.IP " 4." 4 +Two or more positive decimal numbers (with or without \fIk\fP or \fIb\fP) +separated by \fIx\fP, specifying the product of the +indicated values +.LP +.LP +All of the operands are processed before any input is read. +.LP +The following two tables display the octal number character values +used for the \fBascii\fP and \fBebcdic\fP conversions (first +table) and for the \fBibm\fP conversion (second table). In both tables, +the ASCII values are the row and column headers and the +EBCDIC values are found at their intersections. For example, ASCII +0012 (LF) is the second row, third column, yielding 0045 in +EBCDIC. The inverted tables (for EBCDIC to ASCII conversion) are not +shown, but are in one-to-one correspondence with these tables. +The differences between the two tables are highlighted by small boxes +drawn around five entries. +.br +.sp +.ce 1 +\fBTable: ASCII to EBCDIC Conversion\fP +.sp +.sp +.ce 1 +\fBTable: ASCII to IBM EBCDIC Conversion\fP +.SH STDIN +.LP +If no \fBif\fP= operand is specified, the standard input shall be +used. See the INPUT FILES section. +.SH INPUT FILES +.LP +The input file can be any file type. +.SH ENVIRONMENT VARIABLES +.LP +The following environment variables shall affect the execution of +\fIdd\fP: +.TP 7 +\fILANG\fP +Provide a default value for the internationalization variables that +are unset or null. (See the Base Definitions volume of +IEEE\ Std\ 1003.1-2001, Section 8.2, Internationalization Variables +for +the precedence of internationalization variables used to determine +the values of locale categories.) +.TP 7 +\fILC_ALL\fP +If set to a non-empty string value, override the values of all the +other internationalization variables. +.TP 7 +\fILC_CTYPE\fP +Determine the locale for the interpretation of sequences of bytes +of text data as characters (for example, single-byte as +opposed to multi-byte characters in arguments and input files), the +classification of characters as uppercase or lowercase, and the +mapping of characters from one case to the other. +.TP 7 +\fILC_MESSAGES\fP +Determine the locale that should be used to affect the format and +contents of diagnostic messages written to standard error and +informative messages written to standard output. +.TP 7 +\fINLSPATH\fP +Determine the location of message catalogs for the processing of \fILC_MESSAGES +\&.\fP +.sp +.SH ASYNCHRONOUS EVENTS +.LP +For SIGINT, the \fIdd\fP utility shall interrupt its current processing, +write status information to standard error, and exit +as though terminated by SIGINT. It shall take the standard action +for all other signals; see the ASYNCHRONOUS EVENTS section in \fIUtility +Description Defaults\fP . +.SH STDOUT +.LP +If no \fBof\fP= operand is specified, the standard output shall be +used. The nature of the output depends on the operands +selected. +.SH STDERR +.LP +On completion, \fIdd\fP shall write the number of input and output +blocks to standard error. In the POSIX locale the following +formats shall be used: +.sp +.RS +.nf + +\fB"%u+%u records in\\n", <\fP\fInumber of whole input blocks\fP\fB>, + <\fP\fInumber of partial input blocks\fP\fB> +.sp + +"%u+%u records out\\n", <\fP\fInumber of whole output blocks\fP\fB>, + <\fP\fInumber of partial output blocks\fP\fB> +\fP +.fi +.RE +.LP +A partial input block is one for which \fIread\fP() returned less +than the input block +size. A partial output block is one that was written with fewer bytes +than specified by the output block size. +.LP +In addition, when there is at least one truncated block, the number +of truncated blocks shall be written to standard error. In +the POSIX locale, the format shall be: +.sp +.RS +.nf + +\fB"%u truncated %s\\n", <\fP\fInumber of truncated blocks\fP\fB>, "record" (if + <\fP\fInumber of truncated blocks\fP\fB> is one) "records" (otherwise) +\fP +.fi +.RE +.LP +Diagnostic messages may also be written to standard error. +.SH OUTPUT FILES +.LP +If the \fBof\fP= operand is used, the output shall be the same as +described in the STDOUT section. +.SH EXTENDED DESCRIPTION +.LP +None. +.SH EXIT STATUS +.LP +The following exit values shall be returned: +.TP 7 +\ 0 +The input file was copied successfully. +.TP 7 +>0 +An error occurred. +.sp +.SH CONSEQUENCES OF ERRORS +.LP +If an input error is detected and the \fBnoerror\fP conversion has +not been specified, any partial output block shall be +written to the output file, a diagnostic message shall be written, +and the copy operation shall be discontinued. If some other +error is detected, a diagnostic message shall be written and the copy +operation shall be discontinued. +.LP +\fIThe following sections are informative.\fP +.SH APPLICATION USAGE +.LP +The input and output block size can be specified to take advantage +of raw physical I/O. +.LP +There are many different versions of the EBCDIC codesets. The ASCII +and EBCDIC conversions specified for the \fIdd\fP utility +perform conversions for the version specified by the tables. +.SH EXAMPLES +.LP +The following command: +.sp +.RS +.nf + +\fBdd if=/dev/rmt0h of=/dev/rmt1h +\fP +.fi +.RE +.LP +copies from tape drive 0 to tape drive 1, using a common historical +device naming convention. +.LP +The following command: +.sp +.RS +.nf + +\fBdd ibs=10 skip=1 +\fP +.fi +.RE +.LP +strips the first 10 bytes from standard input. +.LP +This example reads an EBCDIC tape blocked ten 80-byte EBCDIC card +images per block into the ASCII file \fBx\fP: +.sp +.RS +.nf + +\fBdd if=/dev/tape of=x ibs=800 cbs=80 conv=ascii,lcase +\fP +.fi +.RE +.SH RATIONALE +.LP +The OPTIONS section is listed as "None" because there are no options +recognized by historical \fIdd\fP utilities. Certainly, +many of the operands could have been designed to use the Utility Syntax +Guidelines, which would have resulted in the classic +hyphenated option letters. In this version of this volume of IEEE\ Std\ 1003.1-2001, +\fIdd\fP retains its curious JCL-like +syntax due to the large number of applications that depend on the +historical implementation. +.LP +A suggested implementation technique for \fBconv\fP= \fBnoerror\fP, +\fBsync\fP is to zero (or <space>-fill, if +\fBblock\fPing or \fBunblock\fPing) the input buffer before each read +and to write the contents of the input buffer to the output +even after an error. In this manner, any data transferred to the input +buffer before the error was detected is preserved. Another +point is that a failed read on a regular file or a disk generally +does not increment the file offset, and \fIdd\fP must then seek +past the block on which the error occurred; otherwise, the input error +occurs repetitively. When the input is a magnetic tape, +however, the tape normally has passed the block containing the error +when the error is reported, and thus no seek is necessary. +.LP +The default \fBibs\fP= and \fBobs\fP= sizes are specified as 512 bytes +because there are historical (largely portable) scripts +that assume these values. If they were left unspecified, unusual results +could occur if an implementation chose an odd block +size. +.LP +Historical implementations of \fIdd\fP used \fIcreat\fP() when processing +\fBof\fP= +\fIfile\fP. This makes the \fBseek\fP= operand unusable except on +special files. The \fBconv\fP= \fBnotrunc\fP feature was +added because more recent BSD-based implementations use \fIopen\fP() +(without O_TRUNC) +instead of \fIcreat\fP(), but they fail to delete output file contents +after the data +copied. +.LP +The \fIw\fP multiplier (historically meaning \fIword\fP), is used +in System V to mean 2 and in 4.2 BSD to mean 4. Since +\fIword\fP is inherently non-portable, its use is not supported by +this volume of IEEE\ Std\ 1003.1-2001. +.LP +Standard EBCDIC does not have the characters \fB'['\fP and \fB']'\fP +\&. The values used in the table are taken from a +common print train that does contain them. Other than those characters, +the print train values are not filled in, but appear to +provide some of the motivation for the historical choice of translations +reflected here. +.LP +The Standard EBCDIC table provides a 1:1 translation for all 256 bytes. +.LP +The IBM EBCDIC table does not provide such a translation. The marked +cells in the tables differ in such a way that: +.IP " 1." 4 +EBCDIC 0112 ( \fB'cent'\fP ) and 0152 (broken pipe) do not appear +in the table. +.LP +.IP " 2." 4 +EBCDIC 0137 ( \fB'not'\fP ) translates to/from ASCII 0236 ( \fB'^'\fP +). In the standard table, EBCDIC 0232 (no graphic) +is used. +.LP +.IP " 3." 4 +EBCDIC 0241 ( \fB'~'\fP ) translates to/from ASCII 0176 ( \fB'~'\fP +). In the standard table, EBCDIC 0137 ( +\fB'not'\fP ) is used. +.LP +.IP " 4." 4 +0255 ( \fB'['\fP ) and 0275 ( \fB']'\fP ) appear twice, once in the +same place as for the standard table and once in place +of 0112 ( \fB'cent'\fP ) and 0241 ( \fB'~'\fP ). +.LP +.LP +In net result: +EBCDIC 0275 ( \fB']'\fP ) displaced EBCDIC 0241 ( \fB'~'\fP ) in cell +0345. +.LP +\ \ \ \ That displaced EBCDIC 0137 ( \fB'not'\fP ) in cell 0176. +.LP +\ \ \ \ That displaced EBCDIC 0232 (no graphic) in cell 0136. +.LP +\ \ \ \ That replaced EBCDIC 0152 (broken pipe) in cell 0313. +.LP +EBCDIC 0255 ( \fB'['\fP ) replaced EBCDIC 0112 ( \fB'cent'\fP ). +.LP +This translation, however, reflects historical practice that (ASCII) +\fB'~'\fP and \fB'not'\fP were often mapped to +each other, as were \fB'['\fP and \fB'cent'\fP ; and \fB']'\fP and +(EBCDIC) \fB'~'\fP . +.LP +The \fBcbs\fP operand is required if any of the \fBascii\fP, \fBebcdic\fP, +or \fBibm\fP operands are specified. For the +\fBascii\fP operand, the input is handled as described for the \fBunblock\fP +operand except that characters are converted to +ASCII before the trailing <space>s are deleted. For the \fBebcdic\fP +and \fBibm\fP operands, the input is handled as +described for the \fBblock\fP operand except that the characters are +converted to EBCDIC or IBM EBCDIC after the trailing +<space>s are added. +.LP +The \fBblock\fP and \fBunblock\fP keywords are from historical BSD +practice. +.LP +The consistent use of the word \fBrecord\fP in standard error messages +matches most historical practice. An earlier version of +System V used \fBblock\fP, but this has been updated in more recent +releases. +.LP +Early proposals only allowed two numbers separated by \fBx\fP to be +used in a product when specifying \fBbs\fP=, \fBcbs\fP=, +\fBibs\fP=, and \fBobs\fP= sizes. This was changed to reflect the +historical practice of allowing multiple numbers in the product +as provided by Version 7 and all releases of System V and BSD. +.LP +A change to the \fBswab\fP conversion is required to match historical +practice and is the result of IEEE PASC Interpretations +1003.2 #03 and #04, submitted for the ISO\ POSIX-2:1993 standard. +.LP +A change to the handling of SIGINT is required to match historical +practice and is the result of IEEE PASC Interpretation 1003.2 +#06 submitted for the ISO\ POSIX-2:1993 standard. +.SH FUTURE DIRECTIONS +.LP +None. +.SH SEE ALSO +.LP +\fIUtility Description Defaults\fP , \fIsed\fP , \fItr\fP +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. In the +event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . |