どーも!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が生成されます
ブロックサイズを指定する場合:[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コマンドのマニュアルを一読してみてください!
以上です!
ここまで読んでいただきありがとうございました!
コメント