DD
Section: User Commands (1)
索引
jman
BSD mandoc
索引
名称
dd
- ファイルのコンバートおよびコピー
索引
書式
[operands ...
]
索引
解説
ユーティリティは、標準入力を標準出力にコピーします。
入力データは
ブロック単位 (デフォルトでは 512 バイト) で読み書きされます。
入力データのブロック数が短かった場合は、何回か読み込みを行い、
ブロック数単位にまとめて出力します。
終了時に、
は、入力と出力の各々について、ブロック単位で処理できたブロック数と
最終ブロックを満たさず半端になったブロック数を
標準エラー出力に表示します。
ブロック単位の変換で切り捨てられた
入力レコードがあった場合には、そのブロック数も表示します。
以下のオペランドが利用可能です:
- 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
互換の お奨め変換マップです。
oldascii
は昔の
AT&T System
および
BSD 4.3 reno
以前のシステムで使われていた変換マップです。
- block
-
入出力のブロック境界に関係なく、入力を改行文字もしくは
end-of-file 文字で区切られる可変長レコード列として
扱います。
末尾の改行文字は捨てられます。
各入力レコードは
cbs
で指定する長さの固定長レコードに変換されます。
変換レコードサイズより短い入力レコードは空白文字が詰められます。
変換レコードサイズより長い入力レコードは長い部分が
切り捨てられます。
切り捨てがあった場合、切り捨てられた入力レコードの数は、
コピーの終了時に標準エラー出力に表示されます。
- ebcdic , ibm , oldebcdic , oldibm
-
レコードが変換された後で
ASCII
から
EBCDIC
への変換を行う以外は
block
と同じです
(これらの指定では
cbs
も指定されている場合は暗黙の内に
block
も指定された事になります)。
EBCDIC
用に 4 つの変換マップがあります。
ebcdic
は
AT&T System
V
互換で、推奨変換マップです。
ibm
は微妙に違う変換マップで、
AT&T System
V
で変換に
ibm
を指定した場合に相当します。
oldebcdic
と
oldibm
は、昔の
AT&T System
および
BSD 4.3 reno
以前のシステムで使われていた変換マップです。
- lcase
-
英大文字を小文字に変換します。
- pareven , parnone , parodd , parset
-
指定したパリティを持つデータを出力します。
EBCDIC
から
ASCII
への変換指定を指定しない限り、
入力のパリティビットは削除されます。
- noerror
-
入力にエラーがあっても処理を止めないようにします。
入力エラーが起こったときは、診断メッセージに続けて、
その時の入力と出力のブロック数を、
正常動作終了時に表示するメッセージと同じ
フォーマットで標準エラー出力に表示します。
sync
変換も指定されていた場合は、入力データのうち失われたものを
NUL
バイト (ブロック指向の変換のときは空白文字) に置き換えて、
通常の入力バッファとして処理します。
fillchar
オプションを指定した場合、自動的に選択される詰め文字の代わりに、
コマンド行で指定した詰め文字を使用します。
sync
変換が指定されていなければ、その入力ブロックは出力から削除されます。
入力ファイルがテープかパイプ以外の場合、
lseek(2)
を使い、
ファイルオフセットをエラーが発生したブロックの次に設定します。
- notrunc
-
出力ファイルを切り詰めません。
これにより、出力ファイルのブロックのうち、
が明示的に書き込まないものが保存されます。
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
''
でつないだものを積の意味で使用できます。
終了時に、
は、きちんともしくは部分的に入出力を行ったブロックの数、
切り詰められた入力レコードの数、奇数長のバイト入れ換えを行った
ブロックの数を標準エラー出力に表示します。
部分的入力ブロックとは、入力ブロックサイズより少なく読まれたものです。
部分出力ブロックとは、出力ブロックサイズより少なく書かれたものです。
テープデバイスで部分出力ブロックが出た場合は致命的なエラーとみなされます。
それ以外の場合は、そのブロックの残りが書かれます。
キャラクタデバイスで部分出力ブロックが出た場合は警告メッセージが出ます。
切り詰められた入力ブロックとは、可変長レコード指向の変換が
指定され入力行が変換レコードに合わせるには長すぎるか newline で
終っていない場合のものです。
通常、入力または変換、もしくは両方の結果のデータは
指定されたサイズの出力ブロックに集められます。
入力データが最後に達した場合、残っている出力データはブロックとして
出力されます。
これは、最後の出力ブロックのサイズは
出力ブロックサイズより短くなる可能性がある事を意味します。
が
SIGINFO
(
stty(1)
の引数
status
参照)
シグナルを受けた場合、通常の処理完了時と同じフォーマットで、
その時点の入出力ブロック数を標準エラー出力に出力します。
が
SIGINT
シグナルを受けた場合、通常の処理完了時と同じフォーマットで、
その時点の入出力ブロック数を標準エラー出力に出力して
は終了します。
索引
使用例
ディスクドライブにバッドブロックが含まれていないことをチェックする。
"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"
索引
診断
Ex -std
索引
関連項目
cp(1),
mt(1),
tr(1)
索引
規格
ユーティリティは
St -p1003.2
規格のスーパセットです。
files
オペランドおよび、
ascii
ebcdic
ibm
oldascii
oldebcdic
oldibm
は
POSIX
規格を拡張しています。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- 使用例
-
- 診断
-
- 関連項目
-
- 規格
-
Time: 07:06:04 GMT, January 12, 2009