2004-02-13 20:56:17 +03:00
|
|
|
.\" $NetBSD: dd.1,v 1.18 2004/02/13 17:56:17 wiz Exp $
|
1995-03-21 12:01:59 +03:00
|
|
|
.\"
|
1994-09-22 13:24:46 +04:00
|
|
|
.\" Copyright (c) 1990, 1993
|
|
|
|
.\" The Regents of the University of California. All rights reserved.
|
1993-05-04 11:08:38 +04:00
|
|
|
.\"
|
|
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
|
|
.\" Keith Muller of the University of California, San Diego.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
2003-08-07 13:05:01 +04:00
|
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
1993-05-04 11:08:38 +04:00
|
|
|
.\" may be used to endorse or promote products derived from this software
|
|
|
|
.\" without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
1995-03-21 12:01:59 +03:00
|
|
|
.\" @(#)dd.1 8.2 (Berkeley) 1/13/94
|
1993-05-04 11:08:38 +04:00
|
|
|
.\"
|
2004-01-17 23:48:57 +03:00
|
|
|
.Dd January 17, 2004
|
1993-05-04 11:08:38 +04:00
|
|
|
.Dt DD 1
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm dd
|
1994-09-22 13:24:46 +04:00
|
|
|
.Nd convert and copy a file
|
1993-05-04 11:08:38 +04:00
|
|
|
.Sh SYNOPSIS
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
.Op operands ...
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
utility copies the standard input to the standard output.
|
|
|
|
Input data is read and written in 512-byte blocks.
|
|
|
|
If input reads are short, input from multiple reads are aggregated
|
|
|
|
to form the output block.
|
|
|
|
When finished,
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
displays the number of complete and partial input and output blocks
|
|
|
|
and truncated input records to the standard error output.
|
|
|
|
.Pp
|
|
|
|
The following operands are available:
|
|
|
|
.Bl -tag -width of=file
|
|
|
|
.It Cm bs= Ns Ar n
|
|
|
|
Set both input and output block size, superseding the
|
|
|
|
.Cm ibs
|
|
|
|
and
|
|
|
|
.Cm obs
|
|
|
|
operands.
|
|
|
|
If no conversion values other than
|
|
|
|
.Cm noerror ,
|
|
|
|
.Cm notrunc
|
|
|
|
or
|
|
|
|
.Cm sync
|
|
|
|
are specified, then each input block is copied to the output as a
|
|
|
|
single block without any aggregation of short blocks.
|
|
|
|
.It Cm cbs= Ns Ar n
|
|
|
|
Set the conversion record size to
|
|
|
|
.Va n
|
|
|
|
bytes.
|
|
|
|
The conversion record size is required by the record oriented conversion
|
|
|
|
values.
|
|
|
|
.It Cm count= Ns Ar n
|
|
|
|
Copy only
|
|
|
|
.Va n
|
|
|
|
input blocks.
|
|
|
|
.It Cm files= Ns Ar n
|
|
|
|
Copy
|
|
|
|
.Va n
|
|
|
|
input files before terminating.
|
|
|
|
This operand is only applicable when the input device is a tape.
|
|
|
|
.It Cm ibs= Ns Ar n
|
|
|
|
Set the input block size to
|
|
|
|
.Va n
|
|
|
|
bytes instead of the default 512.
|
|
|
|
.It Cm if= Ns Ar file
|
|
|
|
Read input from
|
|
|
|
.Ar file
|
|
|
|
instead of the standard input.
|
|
|
|
.It Cm obs= Ns Ar n
|
|
|
|
Set the output block size to
|
|
|
|
.Va n
|
|
|
|
bytes instead of the default 512.
|
|
|
|
.It Cm of= Ns Ar file
|
|
|
|
Write output to
|
|
|
|
.Ar file
|
|
|
|
instead of the standard output.
|
|
|
|
Any regular output file is truncated unless the
|
|
|
|
.Cm notrunc
|
|
|
|
conversion value is specified.
|
|
|
|
If an initial portion of the output file is skipped (see the
|
|
|
|
.Cm seek
|
|
|
|
operand)
|
|
|
|
the output file is truncated at that point.
|
|
|
|
.It Cm seek= Ns Ar n
|
|
|
|
Seek
|
|
|
|
.Va n
|
|
|
|
blocks from the beginning of the output before copying.
|
|
|
|
On non-tape devices, a
|
|
|
|
.Xr lseek 2
|
|
|
|
operation is used.
|
|
|
|
Otherwise, existing blocks are read and the data discarded.
|
|
|
|
If the user does not have read permission for the tape, it is positioned
|
|
|
|
using the tape
|
|
|
|
.Xr ioctl 2
|
|
|
|
function calls.
|
|
|
|
If the seek operation is past the end of file, space from the current
|
|
|
|
end of file to the specified offset is filled with blocks of
|
|
|
|
.Tn NUL
|
|
|
|
bytes.
|
|
|
|
.It Cm skip= Ns Ar n
|
|
|
|
Skip
|
|
|
|
.Va n
|
|
|
|
blocks from the beginning of the input before copying.
|
|
|
|
On input which supports seeks, a
|
|
|
|
.Xr lseek 2
|
|
|
|
operation is used.
|
|
|
|
Otherwise, input data is read and discarded.
|
|
|
|
For pipes, the correct number of bytes is read.
|
|
|
|
For all other devices, the correct number of blocks is read without
|
|
|
|
distinguishing between a partial or complete block being read.
|
1999-07-29 23:03:31 +04:00
|
|
|
.It Cm progress= Ns Ar n
|
|
|
|
Switch on display of progress if
|
|
|
|
.Va n
|
- Use u_longlong_t instead of u_quad_t, u_long, or int for various buffer sizes
- Add strsuftoull(), which parses a number into a u_longlong_t, with
multiplication support, and support for 'g' (GB) and 't' (TB) suffices.
If an error occurs, print to stderr and exit.
Based on get_blk() from args.c and strsufto*() (in other programs)
- Add strsuftoullx(), which acts as per strsuftoull() but returns the
error in the supplied buffer instead (if the returned buffer != "", an
error occurred)
- Replace get_bsz() use with strsuftoull()
- Remove (now) unnecessary argument validation
- Remove unused {f,p,s,t}_stats fields in struct IO
2001-11-25 13:50:06 +03:00
|
|
|
is set to
|
|
|
|
.Dq 1 ,
|
|
|
|
i.e. a
|
|
|
|
.Dq \&.
|
|
|
|
is printed for each block written to the output file.
|
1993-05-04 11:08:38 +04:00
|
|
|
.It Xo
|
2001-11-25 13:54:47 +03:00
|
|
|
.Sm off
|
1993-05-04 11:08:38 +04:00
|
|
|
.Cm conv=
|
2001-11-25 13:54:47 +03:00
|
|
|
.Cm value Op \&, Cm value \&...
|
|
|
|
.Sm on
|
1993-05-04 11:08:38 +04:00
|
|
|
.Xc
|
|
|
|
Where
|
|
|
|
.Cm value
|
|
|
|
is one of the symbols from the following list.
|
|
|
|
.Bl -tag -width unblock
|
|
|
|
.It Cm ascii , oldascii
|
|
|
|
The same as the
|
|
|
|
.Cm unblock
|
|
|
|
value except that characters are translated from
|
1995-01-23 21:21:48 +03:00
|
|
|
.Tn EBCDIC
|
1993-05-04 11:08:38 +04:00
|
|
|
to
|
|
|
|
.Tn ASCII
|
|
|
|
before the
|
|
|
|
records are converted.
|
|
|
|
(These values imply
|
|
|
|
.Cm unblock
|
|
|
|
if the operand
|
|
|
|
.Cm cbs
|
|
|
|
is also specified.)
|
|
|
|
There are two conversion maps for
|
|
|
|
.Tn ASCII .
|
|
|
|
The value
|
|
|
|
.Cm ascii
|
2001-11-25 21:08:29 +03:00
|
|
|
specifies the recommended one which is compatible with
|
1998-02-06 08:39:31 +03:00
|
|
|
.At V .
|
1993-05-04 11:08:38 +04:00
|
|
|
The value
|
|
|
|
.Cm oldascii
|
|
|
|
specifies the one used in historic
|
2002-02-08 04:21:55 +03:00
|
|
|
.Tn AT\*[Am]T
|
1998-02-06 08:39:31 +03:00
|
|
|
and pre-
|
|
|
|
.Bx 4.3 Reno
|
|
|
|
systems.
|
1993-05-04 11:08:38 +04:00
|
|
|
.It Cm block
|
|
|
|
Treats the input as a sequence of newline or end-of-file terminated variable
|
|
|
|
length records independent of input and output block boundaries.
|
|
|
|
Any trailing newline character is discarded.
|
|
|
|
Each input record is converted to a fixed length output record where the
|
|
|
|
length is specified by the
|
|
|
|
.Cm cbs
|
|
|
|
operand.
|
|
|
|
Input records shorter than the conversion record size are padded with spaces.
|
|
|
|
Input records longer than the conversion record size are truncated.
|
|
|
|
The number of truncated input records, if any, are reported to the standard
|
1994-09-22 13:24:46 +04:00
|
|
|
error output at the completion of the copy.
|
1993-05-04 11:08:38 +04:00
|
|
|
.It Cm ebcdic , ibm , oldebcdic , oldibm
|
|
|
|
The same as the
|
|
|
|
.Cm block
|
|
|
|
value except that characters are translated from
|
|
|
|
.Tn ASCII
|
|
|
|
to
|
|
|
|
.Tn EBCDIC
|
|
|
|
after the
|
|
|
|
records are converted.
|
|
|
|
(These values imply
|
|
|
|
.Cm block
|
|
|
|
if the operand
|
|
|
|
.Cm cbs
|
|
|
|
is also specified.)
|
|
|
|
There are four conversion maps for
|
|
|
|
.Tn EBCDIC .
|
|
|
|
The value
|
|
|
|
.Cm ebcdic
|
|
|
|
specifies the recommended one which is compatible with
|
|
|
|
.At V .
|
|
|
|
The value
|
|
|
|
.Cm ibm
|
|
|
|
is a slightly different mapping, which is compatible with the
|
|
|
|
.At V
|
|
|
|
.Cm ibm
|
|
|
|
value.
|
|
|
|
The values
|
|
|
|
.Cm oldebcdic
|
|
|
|
and
|
|
|
|
.Cm oldibm
|
|
|
|
are maps used in historic
|
2002-02-08 04:21:55 +03:00
|
|
|
.Tn AT\*[Am]T
|
1998-02-06 08:39:31 +03:00
|
|
|
and pre
|
|
|
|
.Bx 4.3 Reno
|
|
|
|
systems.
|
1993-05-04 11:08:38 +04:00
|
|
|
.It Cm lcase
|
|
|
|
Transform uppercase characters into lowercase characters.
|
|
|
|
.It Cm noerror
|
|
|
|
Do not stop processing on an input error.
|
|
|
|
When an input error occurs, a diagnostic message followed by the current
|
1994-09-22 13:24:46 +04:00
|
|
|
input and output block counts will be written to the standard error output
|
|
|
|
in the same format as the standard completion message.
|
1993-05-04 11:08:38 +04:00
|
|
|
If the
|
|
|
|
.Cm sync
|
|
|
|
conversion is also specified, any missing input data will be replaced
|
|
|
|
with
|
|
|
|
.Tn NUL
|
|
|
|
bytes (or with spaces if a block oriented conversion value was
|
|
|
|
specified) and processed as a normal input buffer.
|
|
|
|
If the
|
|
|
|
.Cm sync
|
|
|
|
conversion is not specified, the input block is omitted from the output.
|
|
|
|
On input files which are not tapes or pipes, the file offset
|
|
|
|
will be positioned past the block in which the error occurred using
|
|
|
|
.Xr lseek 2 .
|
|
|
|
.It Cm notrunc
|
|
|
|
Do not truncate the output file.
|
|
|
|
This will preserve any blocks in the output file not explicitly written
|
|
|
|
by
|
2003-02-25 13:34:36 +03:00
|
|
|
.Nm .
|
1993-05-04 11:08:38 +04:00
|
|
|
The
|
|
|
|
.Cm notrunc
|
|
|
|
value is not supported for tapes.
|
1994-09-22 13:24:46 +04:00
|
|
|
.It Cm osync
|
|
|
|
Pad the final output block to the full output block size.
|
|
|
|
If the input file is not a multiple of the output block size
|
|
|
|
after conversion, this conversion forces the final output block
|
|
|
|
to be the same size as preceding blocks for use on devices that require
|
|
|
|
regularly sized blocks to be written.
|
|
|
|
This option is incompatible with use of the
|
|
|
|
.Cm bs= Ns Ar n
|
|
|
|
block size specification.
|
2004-01-17 23:48:57 +03:00
|
|
|
.It Cm sparse
|
|
|
|
If one or more non-final output blocks would consist solely of
|
|
|
|
.Dv NUL
|
|
|
|
bytes, try to seek the output file by the required space instead of
|
|
|
|
filling them with
|
|
|
|
.Dv NUL Ns s .
|
|
|
|
This results in a sparse file on some file systems.
|
1993-05-04 11:08:38 +04:00
|
|
|
.It Cm swab
|
|
|
|
Swap every pair of input bytes.
|
|
|
|
If an input buffer has an odd number of bytes, the last byte will be
|
|
|
|
ignored during swapping.
|
|
|
|
.It Cm sync
|
|
|
|
Pad every input block to the input buffer size.
|
|
|
|
Spaces are used for pad bytes if a block oriented conversion value is
|
|
|
|
specified, otherwise
|
|
|
|
.Tn NUL
|
|
|
|
bytes are used.
|
|
|
|
.It Cm ucase
|
|
|
|
Transform lowercase characters into uppercase characters.
|
|
|
|
.It Cm unblock
|
|
|
|
Treats the input as a sequence of fixed length records independent of input
|
|
|
|
and output block boundaries.
|
|
|
|
The length of the input records is specified by the
|
|
|
|
.Cm cbs
|
|
|
|
operand.
|
|
|
|
Any trailing space characters are discarded and a newline character is
|
|
|
|
appended.
|
|
|
|
.El
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Where sizes are specified, a decimal number of bytes is expected.
|
- Use u_longlong_t instead of u_quad_t, u_long, or int for various buffer sizes
- Add strsuftoull(), which parses a number into a u_longlong_t, with
multiplication support, and support for 'g' (GB) and 't' (TB) suffices.
If an error occurs, print to stderr and exit.
Based on get_blk() from args.c and strsufto*() (in other programs)
- Add strsuftoullx(), which acts as per strsuftoull() but returns the
error in the supplied buffer instead (if the returned buffer != "", an
error occurred)
- Replace get_bsz() use with strsuftoull()
- Remove (now) unnecessary argument validation
- Remove unused {f,p,s,t}_stats fields in struct IO
2001-11-25 13:50:06 +03:00
|
|
|
Two or more numbers may be separated by an
|
|
|
|
.Dq x
|
|
|
|
to indicate a product.
|
2004-02-13 20:56:17 +03:00
|
|
|
Each number may have one of the following optional suffixes:
|
- Use u_longlong_t instead of u_quad_t, u_long, or int for various buffer sizes
- Add strsuftoull(), which parses a number into a u_longlong_t, with
multiplication support, and support for 'g' (GB) and 't' (TB) suffices.
If an error occurs, print to stderr and exit.
Based on get_blk() from args.c and strsufto*() (in other programs)
- Add strsuftoullx(), which acts as per strsuftoull() but returns the
error in the supplied buffer instead (if the returned buffer != "", an
error occurred)
- Replace get_bsz() use with strsuftoull()
- Remove (now) unnecessary argument validation
- Remove unused {f,p,s,t}_stats fields in struct IO
2001-11-25 13:50:06 +03:00
|
|
|
.Bl -tag -width 3n -offset indent -compact
|
|
|
|
.It b
|
|
|
|
Block; multiply by 512
|
|
|
|
.It k
|
|
|
|
Kilo; multiply by 1024 (1 KB)
|
|
|
|
.It m
|
|
|
|
Mega; multiply by 1048576 (1 MB)
|
|
|
|
.It g
|
|
|
|
Giga; multiply by 1073741824 (1 GB)
|
|
|
|
.It t
|
|
|
|
Tera; multiply by 1099511627776 (1 TB)
|
|
|
|
.It w
|
|
|
|
Word; multiply by the number of bytes in an integer
|
|
|
|
.El
|
1993-05-04 11:08:38 +04:00
|
|
|
.Pp
|
|
|
|
When finished,
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
displays the number of complete and partial input and output blocks,
|
|
|
|
truncated input records and odd-length byte-swapping blocks to the
|
|
|
|
standard error output.
|
|
|
|
A partial input block is one where less than the input block size
|
|
|
|
was read.
|
|
|
|
A partial output block is one where less than the output block size
|
|
|
|
was written.
|
|
|
|
Partial output blocks to tape devices are considered fatal errors.
|
|
|
|
Otherwise, the rest of the block will be written.
|
|
|
|
Partial output blocks to character devices will produce a warning message.
|
|
|
|
A truncated input block is one where a variable length record oriented
|
|
|
|
conversion value was specified and the input line was too long to
|
|
|
|
fit in the conversion record or was not newline terminated.
|
|
|
|
.Pp
|
|
|
|
Normally, data resulting from input or conversion or both are aggregated
|
|
|
|
into output blocks of the specified size.
|
|
|
|
After the end of input is reached, any remaining output is written as
|
|
|
|
a block.
|
|
|
|
This means that the final output block may be shorter than the output
|
|
|
|
block size.
|
|
|
|
.Pp
|
|
|
|
If
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
receives a
|
|
|
|
.Dv SIGINFO
|
- Use u_longlong_t instead of u_quad_t, u_long, or int for various buffer sizes
- Add strsuftoull(), which parses a number into a u_longlong_t, with
multiplication support, and support for 'g' (GB) and 't' (TB) suffices.
If an error occurs, print to stderr and exit.
Based on get_blk() from args.c and strsufto*() (in other programs)
- Add strsuftoullx(), which acts as per strsuftoull() but returns the
error in the supplied buffer instead (if the returned buffer != "", an
error occurred)
- Replace get_bsz() use with strsuftoull()
- Remove (now) unnecessary argument validation
- Remove unused {f,p,s,t}_stats fields in struct IO
2001-11-25 13:50:06 +03:00
|
|
|
signal
|
|
|
|
(see the
|
|
|
|
.Ic status
|
|
|
|
argument for
|
|
|
|
.Xr stty 1 ) ,
|
|
|
|
the current input and output block counts will
|
1994-09-22 13:24:46 +04:00
|
|
|
be written to the standard error output
|
|
|
|
in the same format as the standard completion message.
|
1993-05-04 11:08:38 +04:00
|
|
|
If
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
receives a
|
|
|
|
.Dv SIGINT
|
|
|
|
signal, the current input and output block counts will
|
1994-09-22 13:24:46 +04:00
|
|
|
be written to the standard error output
|
|
|
|
in the same format as the standard completion message and
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
will exit.
|
2000-09-04 11:30:07 +04:00
|
|
|
.Sh EXIT STATUS
|
1993-05-04 11:08:38 +04:00
|
|
|
The
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
2002-02-08 04:21:55 +03:00
|
|
|
utility exits 0 on success and \*[Gt]0 if an error occurred.
|
1993-05-04 11:08:38 +04:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr cp 1 ,
|
|
|
|
.Xr mt 1 ,
|
|
|
|
.Xr tr 1
|
|
|
|
.Sh STANDARDS
|
|
|
|
The
|
1997-10-20 12:50:59 +04:00
|
|
|
.Nm
|
1993-05-04 11:08:38 +04:00
|
|
|
utility is expected to be a superset of the
|
|
|
|
.St -p1003.2
|
|
|
|
standard.
|
|
|
|
The
|
|
|
|
.Cm files
|
|
|
|
operand and the
|
|
|
|
.Cm ascii ,
|
|
|
|
.Cm ebcdic ,
|
|
|
|
.Cm ibm ,
|
|
|
|
.Cm oldascii ,
|
|
|
|
.Cm oldebcdic
|
|
|
|
and
|
|
|
|
.Cm oldibm
|
|
|
|
values are extensions to the
|
|
|
|
.Tn POSIX
|
|
|
|
standard.
|