【Linux】ファイルのコピーやデータ変換を行うコマンド:dd

Linux

どーも!marusukeです!

ファイルのコピーやデータ変換を行うLinuxコマンド「dd」について説明します!

ddコマンドの使い方

以下の書式になります。基本は標準入出力を使います。

dd [オプション]

オプションは、以下のようになります

オプション説明
if=input_file入力元ファイルを指定します。
of=output_file出力先ファイルを指定します。
bs=block_sizeブロックサイズを指定します。
count=num_blocksコピーするブロック数を指定します。
skip=num_blocks入力ファイルからスキップするブロック数を指定します。
seek=num_blocks出力ファイルに対してスキップするブロック数を指定します。
status=progress進捗状況を表示します。
conv=conversionデータの変換方法を指定します。

ddコマンドの使用例

オプションなしの場合

ddコマンド用のテストtxtファイルを使用します

test.txt

this is test for dd command.

オプションを使用せず、test.txtを標準入力した場合です

dd < test.txt

結果は、以下のようになります

① 「this is test for dd command.」・・・標準出力部分(test.txtの内容)

② 「0+1 records in …」・・・ddの実行内容(標準エラー出力部分)

オプションを使った場合:dd [if=input_file] [of=output_file]

例として、test.txtを新たにoutput.txtとしてコピーしたい時、以下のコマンドを実行します。

dd if=test.txt of=output.txt

以下のように実行結果が表示され、カレントディレクトリ内に新たにoutput.txtが生成されます

dd if=test.txt of=output.txt実行結果

ブロックサイズを指定する場合:[bs=block_size]

ブロックサイズを1KBに指定したいときは、以下のようになります。

dd if=test.txt of=output.txt bs=1k

ちなみにbsオプションをつけないとき(デフォルトのブロックサイズ)は、512バイトとなっています

OSなどの設定状態によってデフォルトのブロックサイズが異なる場合があるので、「man dd」コマンドでddコマンドのマニュアルに記載されているデフォルト値を確認してみてください

データの変換方法を指定する場合:conv=[conversion]

大文字に変換する場合:conv=ucase

入力ファイルのデータを大文字に変換して、出力ファイルに書き込むとき

dd if=test.txt of=output.txt conv=ucase

小文字に変換する場合:conv=lcase

入力ファイルのデータを小文字に変換して、出力ファイルに書き込むとき

dd if=test.txt of=output.txt conv=lcase

ASCIIエンコーディングに変換する場合:conv=ascii

入力ファイルのデータをASCIIエンコーディングに変換して、出力ファイルに書き込むとき

dd if=test.txt of=output.txt conv=ascii

EBCDICエンコーディングに変換する場合:conv=ebcdic

入力ファイルのデータをEBCDICエンコーディングに変換して、出力ファイルに書き込むとき

dd if=test.txt of=output.txt conv=ebcdic

出力ファイル内のデータを保持したまま、入力データを追記する場合:conv=notrunc

出力ファイルを保持したまま、入力ファイルのデータを出力ファイルに追記するとき

dd if=test.txt of=output.txt conv=notrunc

そのほかにもconv=[conversion]オプションの使い方があるので、「man dd」のコマンドでddコマンドのマニュアルを一読してみてください!

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました