スポンサーリンク

DD(1) FreeBSD 一般コマンドマニュアル DD(1)

名称

dd − ファイルのコンバートおよびコピー

書式

dd [operands ...]

解説

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

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

       bs=n

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

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

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

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

fillchar=c
変換モードにおいてブロックの空きを詰めるとき、もしくは sync モー ドで noerror を使用するとき、空白や NUL 文字を使わずに、指定した ASCII 文字を使用して詰めます。

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

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

iseek=n
入力ファイルの n ブロック目にシークします。 skip=n と同じです。

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

of=file
標準出力のかわりに file に対し出力を行います。 notrunc が指定さ れないかぎり、普通の出力ファイルでは最後の 1 ブロックサイズに満 たないデータは切り詰められます。出力ファイルの最初の部分がシーク されて通り過ぎる場合は ( oseek オペランド参照) 出力ファイルは そ こまで切り詰められます。

oseek=n
出力ファイルの n ブロック目にシークします。 seek=n と同じです。

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

skip=n
コピーする前に、入力側ファイルの開始位置を先頭から n ブロックだ け進めます。入力がシーク機能を持っているなら、 lseek(2) システム コールが使用されます。シーク機能がなければ、既存のブロックを読み 捨てる事で指定位置まで進める処理を実行します。入力がパイプから渡 される場合は、正確に指定されたバイト数が読まれます。それ以外のデ バイスでは、読まれたブロックのサイズが指定のブロックサイズに満た ない物や完全な物の区別をせずに、正確に指定されたブロック数が読ま れます。

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

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

block
入出力のブロック境界に関係なく、入力を改行文字もしくは end-of-file 文字で区切られる可変長レコード列として扱い ます。末尾の改行文字は捨てられます。各入力レコードは cbs で指定する長さの固定長レコードに変換されます。変換 レコードサイズより短い入力レコードは空白文字が詰められ ます。変換レコードサイズより長い入力レコードは長い部分 が切り捨てられます。切り捨てがあった場合、切り捨てられ た入力レコードの数は、コピーの終了時に標準エラー出力に 表示されます。

ebcdic, ibm, oldebcdic, oldibm
レコードが変換された後で ASCII から EBCDIC への変換を行 う以外は block と同じです (これらの指定では cbs も指定 されている場合は暗黙の内に block も指定された事になりま す)。 EBCDIC 用に 4 つの変換マップがあります。 ebcdic は AT&T System V UNIX 互換で、推奨変換マップです。 ibm は微妙に違う変換マップで、 AT&T System V UNIX で変換に ibm を指定した場合に相当します。 oldebcdicoldibm は、昔の AT&T UNIX および 4.3BSD−Reno 以前のシステムで 使われていた変換マップです。

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

pareven, parnone, parodd, parset
指定したパリティを持つデータを出力します。 EBCDIC から ASCII への変換指定を指定しない限り、入力のパリティビッ トは削除されます。

noerror
入力にエラーがあっても処理を止めないようにします。入力 エラーが起こったときは、診断メッセージに続けて、その時 の入力と出力のブロック数を、正常動作終了時に表示する メッセージと同じフォーマットで標準エラー出力に表示しま す。 sync 変換も指定されていた場合は、入力データのうち 失われたものを NUL バイト (ブロック指向の変換のときは空 白文字) に置き換えて、通常の入力バッファとして処理しま す。 fillchar オプションを指定した場合、自動的に選択さ れる詰め文字の代わりに、コマンド行で指定した詰め文字を 使用します。 sync 変換が指定されていなければ、その入力 ブロックは出力から削除されます。入力ファイルがテープか パイプ以外の場合、 lseek(2) を使い、ファイルオフセット をエラーが発生したブロックの次に設定します。

notrunc
出力ファイルを切り詰めません。これにより、出力ファイル のブロックのうち、 dd が明示的に書き込まないものが保存 されます。 notrunc はテープではサポートされません。

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

sparse
一つ以上の出力ブロックが NUL バイトのみからなる場合、 NUL で埋める代りに、必要な空間だけ出力ファイルのシーク を試みます。結果として、疎なファイルとなります。

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

sync
各入力ブロックを入力バッファサイズになるようにパディン グします。パディングには、ブロック指向の変換の場合は空 白文字を、そうでなければ NUL バイトを使います。

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

unblock
入出力のブロック境界に関係なく、入力を固定長レコード列 として扱います。入力レコードの長さは cbs オペランドで指 定します。データの後ろの空白文字を除去して、改行文字を 追加します。

サイズの指定の際には、バイト単位で 10 進数、8 進数、16 進数を想定していま す。数字の最後に ‘‘b’’, ‘‘k’’, ‘‘m’’, ‘‘g’’, ‘‘w’’ をつけた場合、その数字 に、 512, 1024 (1K), 1048576 (1M), 1073741824 (1G), integer (整数) に収ま るバイト数が、それぞれ乗ぜられます。 2 つ以上の数字を ‘‘x’’ でつないだも のを積の意味で使用できます。

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

通常、入力または変換、もしくは両方の結果のデータは指定されたサイズの出力 ブロックに集められます。入力データが最後に達した場合、残っている出力デー タはブロックとして出力されます。これは、最後の出力ブロックのサイズは出力 ブロックサイズより短くなる可能性がある事を意味します。

dd が SIGINFO ( stty(1) の引数 status 参照) シグナルを受けた場合、通常の 処理完了時と同じフォーマットで、その時点の入出力ブロック数を標準エラー出 力に出力します。 dd が SIGINT シグナルを受けた場合、通常の処理完了時と同 じフォーマットで、その時点の入出力ブロック数を標準エラー出力に出力して dd は終了します。

使用例

ディスクドライブにバッドブロックが含まれていないことをチェックする。

dd if=/dev/ad0 of=/dev/null bs=1m

現在のところリカバー可能なリードエラーのエラー度合が進んでリカバー不可能 になってしまわないように、ディスクドライブをリフレッシュする。

dd if=/dev/ad0 of=/dev/ad0 bs=1m

ファイルからパリティビットを削除する。

dd if=file conv=parnone of=file.txt

ファイルの (偶数) パリティエラーをチェックする。

dd if=file conv=pareven | cmp -x - file

診断

ユーティリティ dd は、成功すると 0 で、エラーがあった場合は >0 で終了しま す。

関連項目

cp(1), mt(1), tr(1)

規格

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

FreeBSD 10.0 August 15, 2004 FreeBSD 10.0

スポンサーリンク