dd − 轉換和拷貝檔案
dd [−−help] [−−version] [if=file] [of=file] [ibs=bytes] [obs=bytes] [bs=bytes] [cbs=bytes] [skip=blocks] [seek=blocks] [count=blocks] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]
當進行非強制的轉換的時候,使用指定的輸入和輸出塊大小拷貝檔案 (預設是從標準輸入到標準輸出。)
它每次從輸入讀取指定大小的一個塊(預設是512字節)。 如果使用 bs=bytes 選項,並且沒有轉換,除了指定 sync, noerror, 或 notrunc 之外, 那麼dd將把全部讀到的數據(可以比請求讀的少) 寫到獨立的輸出塊去。 這個輸出塊的長度和讀到的數據 完全一樣,除非指定使用 sync(同步) 轉換,那樣的話,數據結尾處將追加NUL字符(或空格,見下)。
其他情況下,輸入的時候每次讀一個塊,然後處理,並將 輸出結果收集起來,最後寫到指定大小的數據塊中去。最 終的輸出塊可能會比指定的大小短一些。
數字值選項(以字節或塊為單位)後面可以跟一個乘數: k=1024,b=512,w=2,c=1(w和c是GNU擴展語法。最好別 使用w,因為在system V中,它表示2,在4.2 BSD中,它 表示4)。兩個或更多的數值表達式可以通過“x”乘起來。 GEU fileutils 4.0並且允許在數據塊大小的敘述中使用 下列乘法延伸檔名(用bs=,cbs=,obs=):M=1048576,G=1073741824, 同理可得T,P,E,Z,Y。D延伸檔名表示數值是以 十進制表示的:kD=1000 MD=1000000 GD=1000000000等等。 (注意,在ls、df、du命令中,M等標記的大小是由環境 變量確定的,而在DD中,它的值是固定的。)
if=file
從 file 中讀而不是標準輸入。
of=file
寫到 file 裏去而不是標準輸出。除非指定 conv=notrunc ,否則, dd 將把 file 截為O字節(或由 seek= 選項指定的大小)
ibs=bytes
一次讀 bytes 字節。預設是512。
obs=bytes
一次寫 bytes 字節。預設是512。
bs=bytes
一次讀和寫 bytes 字節。這將覆蓋 ibs 和 obs 設定的值(並且,設定 bs 不等於同時將 ibs 和 obs 設為同一個值,至少在 只使用 sync, noerror 或 notrunc 轉換時是這樣的。因為bs規定,每個輸入塊都應作為單獨 的數據塊拷貝到輸出,而不把較短的塊組合到一起)。
cbs=bytes
為 block 轉換和 unblock 轉換指定轉換塊的大小。
skip=blocks
在拷貝之前,跳過輸入檔案的前 blocks 塊,每塊大小為 ibs−byte 字節。
seek=blocks
在拷貝之前,跳過輸出檔案的前 blocks 塊,每塊大小為 obs−byte 字節。
count=blocks
只拷貝輸入檔案的前 blocks 塊(每塊的大小為 ibs−byte 字節),而不是全部內容,直到檔案末尾。
conv=轉換"[,"轉換"]..."
將檔案按 轉換 參數指定的方式轉換(在“,”兩邊沒有空格)。
轉換方式包括:
ascii |
將EBCDIC轉換成ascii。 |
||
ebcdic |
將ascii轉換成ebcdic。 |
||
ibm |
將ascii轉換成alternative ebcdic。 |
||
block |
每一行輸入,無論長短,輸出都是 cbs 字節,並且其中的“換行”(NEWLINE,即c中的’0)用 空格替換。如有必要,行尾會填充空格。 |
unblock
用“換行”替換每個輸入塊( cbs 字節大小)末尾的空格。
lcase |
將大寫字母轉換成小寫。 |
||
ucase |
將小寫字母轉換成大寫。 |
||
swab |
交換每對輸入字節。如果讀入的字節數是奇數,最後 一個字節只是簡單的複製到輸出(因為沒有能跟它交換的 字節了)(POSIX 1003.26,PASC翻譯1003.2 3號和4號)。 |
noerror
發生讀錯誤時,繼續進行。
notrunc
不截斷輸出檔案。
sync |
用0填充到每個輸入塊的末尾,使其大小為 ibs 字節。 |
−−help |
將用法信息列印到標準輸出,並成功退出。 |
−−version
將版本信息列印到標準輸出,並成功退出。
−− |
結束選項列表。 |
LANG, LC_ALL, LC_CTYPE和LC_MESSAGES具有其通常含義。
POSIX 1003.2
磁帶機通常不能接受任意大小的數據塊,當最後一個數據片 段不能充滿整個塊時, dd 將出現I/O錯誤。用’dd if=myfile of=/dev/mytape conv=sync’ 就可以使全部內容存到磁帶上。當然,這樣做,把檔案從磁 帶上讀回時回產生一個稍大些的檔案,因為其尾部填充了一 些NUL(空字符)。
本手冊頁描述了fileutils−4.0套件中的 dd 命令。其他版 本的dd會與此稍有不同。有關更正和補充可以發帖到中國linux 論壇−man手冊版。報告程式中的錯誤,請給 fileutils−bugs2gnu.ai.wit.edu 發郵件。
astonia <email>
2000/10/19
http://cmpp.linuxforum.net