DD(1)

名称
dd - ファイルのコンバートおよびコピー

書式
dd [operands ...]

解説
dd ユーティリティは、標準入力を標準出力にコピーします。入力データは ブロック単位 (デフォルトでは512バイト) で読み書きされます。 入力データのブロック数が短かった場合は、何回か読み込みを行い、 ブロック数単位にまとめて出力します。 終了時に、 dd は、入力と出力の各々について、ブロック単位で処理できたブロック数と 最終ブロックを満たさず半端になったブロック数を 標準エラー出力に表示します。ブロック単位の変換で切り捨てられた 入力レコードがあった場合には、そのブロック数も表示します。

以下のオペランドが利用可能です:

bs=n
    入出力両方のブロックサイズを設定します。 ibs, obs の指定に優先します。 noerror, notrunc, sync 以外の変換指定がない場合は、入力ブロック数が小さい場合のまとめ処理なしで、 入力ブロックを出力ブロックに 1 ブロック単位でコピーします。

cbs=n
    変換レコードサイズを n バイトにします。 レコード指向の変換が指定された場合には変換レコードサイズが必要です。

count=n
    入力のうち、 n 個のブロックだけをコピーします。

files=n
    n 個の入力ファイルをコピーします。このオペランドは、入力デバイスが テープのときだけ有効です。

ibs=n
    入力ブロックのサイズを、デフォルトの 512 バイトにかわって、 n バイトにします。

if=file
    標準入力のかわりに file から入力を行います。

obs=n
    出力ブロックのサイズを、デフォルトの 512 バイトにかわって、 n バイトにします。

of=file
    標準出力のかわりに file に対し出力を行います。 notrunc が指定されないかぎり、普通の出力ファイルでは、最後の 1 ブロックサイズに 満たないデータは切り詰められます。 オペランド seek により開始位置をスキップする場合で、指定のサイズが実際のファイルサイズよりも 大きい場合は、ファイルの末尾が開始位置となります。

seek=n
    コピーする前に、出力側ファイルの開始位置を先頭から n ブロックだけ進めます。出力がテープデバイスでない場合は、 lseek(2) システムコールを使ってシークが実行され ます。テープデバイスの場合は、既存のブロックを読み捨てる事で指定位置まで 進める処理を実行します。もしユーザがテープデバイスに対し読み込みのアクセス権 を持っていないときは、テープデバイスに対する ioctl(2) システムコールを使います。シーク処理がファイルの最後を超えて行われる場合は、 ファイルの末尾から指定のシーク位置に相当する部分まで NUL データのブロックを挿入します。

skip=n
    コピーする前に、入力側ファイルの開始位置を先頭から n ブロックだけ進めます。入力がシーク機能を持っているなら、 lseek(2) システムコールが使用されます。シーク機能がなければ、既存のブロックを 読み捨てる事で、指定位置まで進める処理を実行します。入力がパイプから渡される 場合は、 n はバイト単位となります。他のデバイスの場合は、 n はブロック単位です。

    conv= value[, value ...] value に以下のシンボルのうちの 1 つを指定して変換を行います。

    ascii, oldascii
        レコードの変換を行う前に EBCDIC から ASCII への文字コード変換を行います。そのほかは unblock と同じです。 (これらの指定では cbs も指定されている場合は暗黙の内に unblock も指定された事になります。) ASCII 用に 2 つの変換マップがあります。 ascii は AT&T UNIX 互換の推奨変換マップです。 oldascii は昔の AT&T および pre 4.3BSD Reno システムで使われていた変換マップです。

    block
        入出力のブロック境界に関係なく、入力を newline (改行) もしくは end-of-file (ファイル末) で区切られる可変長レコード列として扱います。 各入力レコードは、 cbs オペランドで指定された長さの固定長のレコードに変換されます。 このとき、newline は捨てられ ます。各入力レコードで固定長レコードに満たない分は、space (空白) で パディングされます。 入力レコードのほうが長い場合は、長い部分が切り捨てられます。切り捨てがあった レコード数は、もしあれば、コピーの終了時に標準エラー出力に表示さます。

    ebcdic, ibm, oldebcdic, oldibm
        レコードが変換された後で ASCII から EBCDIC への変換を行う以外は、 block 値と同じです。 EBCDIC 用に 4 つの変換マップがあります。 ebcdic は AT&T UNIX 互換の推奨変換マップ、 ibm は ebcdic と微妙に違う変換マップで、 AT&T UNIX の dd で変換に ibm を指定した場合に相当します。 oldebcdic と oldibm は、昔の AT&T および pre- 4.3BSD Reno システムで使われていた変換マップです。

    lcase
        英大文字を小文字に変換します。

    noerror
        入力にエラーがあっても、処理を止めないようにします。入力エラーが 起こったときは、入力と出力のブロック数など、正常動作時に最後に表示する メッセージと同じものを、診断メッセージとして標準エラー出力に表示します。 もし sync 変換も指定されていた場合は、入力データのうち変換エラーになったものを NUL データ (固定長ブロックへの変換のときは space) に置き換え、 通常の入力バッファとして処理します。 sync 変換が指定されていなければ、入力ブロックが出力ブロックから削除されます。

    notrunc
        出力ファイルを切り詰めず、ブロック単位になるようにします。 notrunc 値はテープではサポートされません。

    osync
        最後の出力ブロックは出力ブロックサイズを満たすようにパディングされます。 もし入力ファイルが変換後の出力ブロックサイズの整数倍でなかった場合に、 デバイスに書き込むためには正しいサイズのブロックが必要なため、 最後の出力ブロックが直前のブロックと同じなるようにします。 このオプションは bs=n によるブロックサイズ指定とは両立しません。

    swab
        入力データを 2 バイトごとのペアとみなし、入れ替えます。入力が奇数 バイトだった場合、最後のデータはそのままになります。

    sync
        入力レコードを入力ブロックのサイズになるようにパディングします。 パディングには、固定長変換の場合は空白を、可変長変換の場合は NUL データを使います。

    ucase
        英小文字を大文字に変換します。

    unblock
        cbs でサイズ指定された固定長レコード形式の入力を可変長レコード形式に変換します。 入力レコードの長さは、 cbs オペランドで指定します。 データの後ろにパディングされている space を除去し、 各レコードごとに newline をつけます。

サイズの指定は 10 進のバイト数を要求されます。 数字の最後に ``b'', ``k'', ``m'', ``w'' をつけた場合は、 それぞれ、次のような単位のサイズを意味します。
b   512バイト (1 block)
k   1024バイト (1 Kbyte)
m   1048576 バイト (1 Mbyte)
w   そのシステムで integer (整数) に使われるバイト数 (1Word)

また、8x256 のように、2 つ以上の数字の間に``x''を置いた表現は、 それらの値の積を表します。

終了時に、 dd は、きちんともしくは部分的に入出力を行ったブロックの数、 切り詰められた入力レコードの数、奇数長のバイト入れ換えを行った ブロックの数を標準エラー出力に表示します。 部分的入力ブロックとは、入力ブロックサイズより少なく読まれた もののことです。 部分出力ブロックとは、出力ブロックサイズより少なく書かれた もののことです。 テープデバイスで部分出力ブロックが出た場合は、致命的なエラーとみなされます。 それ以外の場合は、そのブロックの残りが書かれます。 キャラクタデバイスで部分出力ブロックが出た場合は、警告メッセージが出ます。

入力データが最後に達した場合、出力データはブロックサイズを満たさずに出 力されます。このため、最後の出力ブロックのサイズは、通常の出力ブロックサイズ より小さくなります。

dd が SIGINFO シグナルを受けた場合、 通常、処理完了時に表示するメッセージ (処理した入力と出力ブロック数など) を、即座に標準エラー出力に表示します。 シグナル SIGINT を受けた場合は、処理した入力と出力ブロック数を表示したあと、 終了します。

dd ユーティリティは、成功した場合は 0 を、 エラーが起きた場合は 0 より大きな値を返します。

関連項目
cp(1), mt(1), tr(1)

規格
dd ユーティリティは p1003.2 のスーパーセットです。 files オペランドおよび、 ascii, ebcdic, ibm, oldascii, oldebcdic, oldibm 値は POSIX 規格を拡張しています。