Linux 磁盤維護 : dd 命令詳解

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章