.\" 版權所有 Andries Brouwer, Ragnar Hojlond Espinosa和A Wik 1998. .\" 中文版版權所有 astonia,BitBIRD, www.linuxforum.net 2000 .\" 本檔案可以在LDP GENERAL licence 1998年第一版所述條件下複製, .\" 並且該許可可同本檔案一起分發。 .\" .TH DD 1 "November 1998" "GNU fileutils 4.0" .SH NAME dd \- 轉換和複製檔案 .SH 摘要 .B dd .B [\-\-help] [\-\-version] .BI [if= file ] .BI [of= file ] .BI [ibs= bytes ] .BI [obs= bytes ] .BI [bs= bytes ] .BI [cbs= bytes ] .BI [skip= blocks ] .BI [seek= blocks ] .BI [count= blocks ] .B "[conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]" .SH 描述 當進行非強制的轉換的時候,使用指定的輸入和輸出塊大小複製檔案 (預設是從標準輸入到標準輸出。) .PP 它每次從輸入讀取指定大小的一個塊(預設是512位元組)。 如果使用 .BI bs= bytes 選項,並且沒有轉換,除了指定 .BR sync ", " noerror ", 或 " notrunc 之外, 那麼dd將把全部讀到的資料(可以比請求讀的少) 寫到獨立的輸出塊去。 這個輸出塊的長度和讀到的資料 完全一樣,除非指定使用 .B sync(同步) 轉換,那樣的話,資料結尾處將追加NUL字元(或空格,見下)。 .PP 其他情況下,輸入的時候每次讀一個塊,然後處理,並將 輸出結果收集起來,最後寫到指定大小的資料塊中去。最 終的輸出塊可能會比指定的大小短一些。 .PP 數字值選項(以位元組或塊為單位)後面可以跟一個乘數: k=1024,b=512,w=2,c=1(w和c是GNU擴充套件語法。最好別 使用w,因為在system V中,它表示2,在4.2 BSD中,它 表示4)。兩個或更多的數值表示式可以透過\(lqx\(rq乘起來。 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中,它的值是固定的。) .SH 選項 .TP .BI "if=" file 從 .I file 中讀而不是標準輸入。 .TP .BI "of=" file 寫到 .I file 裡去而不是標準輸出。除非指定 .B conv=notrunc ,否則, .B dd 將把 .I file 截為O位元組(或由 .BR seek= 選項指定的大小) .TP .BI "ibs=" bytes 一次讀 .I bytes 位元組。預設是512。 .TP .BI "obs=" bytes 一次寫 .I bytes 位元組。預設是512。 .TP .BI "bs=" bytes 一次讀和寫 .I bytes 位元組。這將覆蓋 .B ibs 和 .BR obs 設定的值(並且,設定 .B bs 不等於同時將 .B ibs 和 .B obs 設為同一個值,至少在 只使用 .BR sync , .B noerror 或 .B notrunc 轉換時是這樣的。因為bs規定,每個輸入塊都應作為單獨 的資料塊複製到輸出,而不把較短的塊組合到一起)。 .TP .BI "cbs=" bytes 為 .B block 轉換和 .BR unblock 轉換指定轉換塊的大小。 .TP .BI "skip=" blocks 在複製之前,跳過輸入檔案的前 .I blocks 塊,每塊大小為 .BR ibs \-byte 位元組。 .TP .BI "seek=" blocks 在複製之前,跳過輸出檔案的前 .I blocks 塊,每塊大小為 .BR obs \-byte 位元組。 .TP .BI "count=" blocks 只複製輸入檔案的前 .I blocks 塊(每塊的大小為 .BR ibs \-byte 位元組),而不是全部內容,直到檔案末尾。 .TP .BI "conv=" 轉換"[," 轉換"]..." 將檔案按 .I 轉換 引數指定的方式轉換(在\(lq,\(rq兩邊沒有空格)。 .RS .PP 轉換方式包括: .PP .TP .B ascii 將EBCDIC轉換成ascii。 .TP .B ebcdic 將ascii轉換成ebcdic。 .TP .B ibm 將ascii轉換成alternative ebcdic。 .TP .B block 每一行輸入,無論長短,輸出都是 .B cbs 位元組,並且其中的\(lq換行\(rq(NEWLINE,即c中的'\n')用 空格替換。如有必要,行尾會填充空格。 .TP .B unblock 用\(lq換行\(rq替換每個輸入塊( .BR cbs 位元組大小)末尾的空格。 .TP .B lcase 將大寫字母轉換成小寫。 .TP .B ucase 將小寫字母轉換成大寫。 .TP .B swab 交換每對輸入位元組。如果讀入的位元組數是奇數,最後 一個位元組只是簡單的複製到輸出(因為沒有能跟它交換的 位元組了)(POSIX 1003.26,PASC翻譯1003.2 3號和4號)。 .TP .B noerror 發生讀錯誤時,繼續進行。 .TP .B notrunc 不截斷輸出檔案。 .TP .B sync 用0填充到每個輸入塊的末尾,使其大小為 .B ibs 位元組。 .RE .SH "GNU標準選項" .TP .B "\-\-help" 將用法資訊列印到標準輸出,併成功退出。 .TP .B "\-\-version" 將版本資訊列印到標準輸出,併成功退出。 .TP .B "\-\-" 結束選項列表。 .SH 環境變數 LANG, LC_ALL, LC_CTYPE和LC_MESSAGES具有其通常含義。 .SH "遵循標準" POSIX 1003.2 .SH 舉例 磁帶機通常不能接受任意大小的資料塊,當最後一個數據片 段不能充滿整個塊時, .B dd 將出現I/O錯誤。用'dd if=myfile of=/dev/mytape conv=sync' 就可以使全部內容存到磁帶上。當然,這樣做,把檔案從磁 帶上讀回時回產生一個稍大些的檔案,因為其尾部填充了一 些NUL(空字元)。 .SH 注 本手冊頁描述了fileutils\-4.0軟體包中的 .B dd 命令。其他版 本的dd會與此稍有不同。有關更正和補充可以發帖到中國linux 論壇\-man手冊版。報告程式中的錯誤,請給 fileutils\-bugs2gnu.ai.wit.edu 發郵件。 .SH "[中文版維護人]" .B astonia .SH "[中文版最新更新]" .BR 2000/10/19 .SH "[中國Linux論壇man手冊頁翻譯計劃]" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR