Linux dd命令用於讀取、轉換並輸出數據。
dd可從標準輸入或文件中讀取數據,根據指定的格式來轉換數據,再輸出到文件、設備或標準輸出。
參數說明:
if=文件名:輸入文件名,缺省爲標準輸入。即指定源文件。
of=文件名:輸出文件名,缺省爲標準輸出。即指定目的文件。
ibs=bytes:一次讀入bytes個字節,即指定一個塊大小爲bytes個字節。
obs=bytes:一次輸出bytes個字節,即指定一個塊大小爲bytes個字節。
bs=bytes:同時設置讀入/輸出的塊大小爲bytes個字節。
cbs=bytes:一次轉換bytes個字節,即指定轉換緩衝區大小。
skip=blocks:從輸入文件開頭跳過blocks個塊後再開始複製。
seek=blocks:從輸出文件開頭跳過blocks個塊後再開始複製。
count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。
conv=<關鍵字>,關鍵字可以有以下11種:
conversion:用指定的參數轉換文件。
ascii:轉換ebcdic爲ascii
ebcdic:轉換ascii爲ebcdic
ibm:轉換ascii爲alternate ebcdic
block:把每一行轉換爲長度爲cbs,不足部分用空格填充
unblock:使每一行的長度都爲cbs,不足部分用空格填充
lcase:把大寫字符轉換爲小寫字符
ucase:把小寫字符轉換爲大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:將每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。
--help:顯示幫助信息
--version:顯示版本信息
實例
在Linux 下製作啓動盤,可使用如下命令:
dd if=boot.img of=/dev/fd0 bs=1440k
將testfile文件中的所有英文字母轉換爲大寫,然後轉成爲testfile_1文件,在命令提示符中使用如下命令:
dd if=testfile_2 of=testfile_1 conv=ucase
其中testfile_2 的內容爲:
$ cat testfile_2 #testfile_2的內容
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
轉換完成後,testfile_1 的內容如下:
$ dd if=testfile_2 of=testfile_1 conv=ucase #使用dd 命令,大小寫轉換記錄了0+1 的讀入
記錄了0+1 的寫出
95字節(95 B)已複製,0.000131446 秒,723 KB/s
cmd@hdd-desktop:~$ cat testfile_1 #查看轉換後的testfile_1文件內容
HELLO LINUX!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
THIS IS A LINUX TESTFILE!
LINUX TEST #testfile_2中的所有字符都變成了大寫字母
由標準輸入設備讀入字符串,並將字符串轉換成大寫後,再輸出到標準輸出設備,使用的命令爲:
dd conv=ucase
輸入以上命令後按回車鍵,輸入字符串,再按回車鍵,按組合鍵Ctrl+D 退出,出現以下結果:
$ dd conv=ucase
Hello Linux! #輸入字符串後按回車鍵
HELLO LINUX! #按組合鍵Ctrl+D退出,轉換成大寫結果
記錄了0+1 的讀入
記錄了0+1 的寫出
13字節(13 B)已複製,12.1558 秒,0.0 KB/s
實例
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
[root@localhost text]# du -sh sun.txt
1.1M sun.txt
該命令創建了一個1M大小的文件sun.txt,其中參數解釋:
- if 代表輸入文件。如果不指定if,默認就會從stdin中讀取輸入。
- of 代表輸出文件。如果不指定of,默認就會將stdout作爲默認輸出。
- bs 代表字節爲單位的塊大小。
- count 代表被複制的塊數。
- /dev/zero 是一個字符設備,會不斷返回0值字節(\0)。
塊大小可以使用的計量單位表
單元大小 | 代碼 |
字節(1B) | c |
字節(2B) | w |
塊(512B) | b |
千字節(1024B) | k |
兆字節(1024KB) | M |
吉字節(1024MB) | G |
以上命令可以看出dd命令來測試內存操作速度:
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s