Manpages

ИМЯ

dd − преобразовать и копировать файл

ОБЗОР

dd [−−help] [−−version] [if=файл] [of=файл] [ibs=байты] [obs=байты] [bs=байты] [cbs=байты] [skip=блоки] [seek=блоки] [count=блоки] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]

ОПИСАНИЕ

dd копирует файл (по умолчанию из стандартного ввода на стандартный вывод), используя заданные размеры блоков для ввода и вывода, и в то же время, возможно, выполняя его преобразование.

dd читает по одному блоку за раз, используя заданный размер входного блока (по умолчанию 512 байт). Если задана опция bs=байты и не требуется преобразований, отличных от sync, noerror, или notrunc, то dd записывает прочитанные данные (которых может быть меньше, чем было запрошено) в отдельный выходной блок. Выходной блок имеет точно ту же длину, что прочитанный блок, за исключением случая, когда задано преобразование sync, при котором данные добиваются символами NUL (или пробелами, см. ниже).

В противном случае ввод читается по одному блоку за раз, обрабатывается, а результирующий вывод накапливается и записывается поблочно с заданным размером выходного блока. Последний выходной блок может быть короче.

За числовыми значениями опций (байты и блоки) могут следовать коэффициенты: ’k’=1024, ’b’=512, ’w’=2, ’c’=1 (коэффициенты ’w’ и ’c’ являются расширениями GNU; ’w’ никогда не должен использоваться -- он означает 2 в System V и 4 в 4.2BSD). Два или более таких числовых выражений могут быть умножены друг на друга с помощью символа ’x’ между ними. Версия GNU fileutils-4.0 также разрешает при задании размеров блоков (в bs=, cbs=, ibs=, obs=) следующие коэффициенты: M=1048576, G=1073741824, и так далее для T, P, E, Z, Y. Суффикс ’D’ делает значения десятичными: kD=1000, MD=1000000, GD=1000000000, и так далее. (Заметим, что для ls, df, du размер M и т. п. определяется переменными окружения, но для dd он фиксирован).

ОПЦИИ

if=файл

Читает данные из файла вместо стандартного ввода.

of=файл

Пишет данные в файл вместо стандартного вывода. Если только не задан conv=notrunc, dd обрезает файл до нулевого размера (или размера, заданного в seek=).

ibs=bytes

Читает по bytes байт за раз. По умолчанию 512.

obs=bytes

Пишет по bytes байт за раз. По умолчанию 512.

bs=bytes

Читает и пишет по bytes байт за раз. Данная опция перекрывает опции ibs и obs. (Кроме того, установка bs не эквивалентна установке обеих опций ibs и obs в то же значение, по крайней мере, когда не задано преобразований отличных от sync, noerror и notrunc, так как она оговаривает, что каждый входной блок будет копироваться на выход как отдельный блок без объединения коротких блоков).

cbs=байт

Задает размер блока для преобразований типа block и unblock.

skip=blocks

Пропускает blocks блоков длины ibs байт во входном файле перед началом копирования.

seek=blocks

Пропускает в выходном файле blocks блоков длины obs байт перед началом копирования.

count=blocks

Копирует лишь blocks блоков длины ibs байт из входного файла, а не весь входной файл, как обычно.

conv=ПРЕОБРАЗОВАНИЕ[,ПРЕОБРАЗОВАНИЕ]...

Преобразует файл, как задано аргументом(ами) ПРЕОБРАЗОВАНИЕ. (Вокруг запятых не должно быть пробелов).

Типы преобразований:

ascii

Преобразование EBCDIC в ASCII.

ebcdic

Преобразование ASCII в EBCDIC.

ibm

Преобразование ASCII в альтернативный EBCDIC.

block

Для каждой строки во входном файле, выводить cbs байт, заменяя символ новой строки на пробел и добивая пробелами при необходимости.

unblock

Заменять заключительные пробелы в каждом входном блоке размера cbs байт на символ новой строки.

lcase

Изменять заглавные буквы на строчные.

ucase

Изменять строчные буквы на заглавные.

swab

Менять местами каждую пару входных байт. Если последний байт имеет нечетный порядковый номер, то он просто копируется (так как менять местами нечего). [POSIX 1003.2b, PASC interpretations 1003.2 #3 и #4]

noerror

Продолжать после ошибок чтения.

notrunc

Не обрезать выходной файл.

sync

Дополнять каждый входной блок до размера ibs путем добавления нулевых байт.

СТАНДАРТНЫЕ ОПЦИИ GNU

−−help

Выдать подсказку на стандартный вывод и успешно завершиться.

−−version

Выдать информацию о версии на стандартный вывод и успешно завершиться.

−−

Служит для обозначения конца списка опций.

ОКРУЖЕНИЕ

При работе обычным образом используются значения переменных LANG, LC_ALL, LC_CTYPE и LC_MESSAGES.

СОВМЕСТИМОСТЬ

POSIX 1003.2

ПРИМЕР

Часто стример не может работать с блоками произвольного размера, и dd будет выдавать ошибку ввода/вывода для последнего фрагмента данных, который не полностью заполняет блок. Для получения всего содержимого ленты, используйте ’dd if=myfile of=/dev/mytape conv=sync’. Разумеется, если прочитать теперь этот файл обратно с ленты, то он станет немного больше, потому что будет дополнен нулями.

ОШИБКИ РЕАЛИЗАЦИИ

Команды типа ’dd if=myfile of=/dev/fd0 bs=1k seek=172’ завершаются неудачей на некоторых системах, потому что dd пытается обрезать выходной файл, а обрезать блочное устройство нельзя. В таких случаях добавьте флаг ’conv=notrunc’.

ЗАМЕЧАНИЯ

Данная страница описывает версию dd из пакета fileutils-4.0; другие версии могут иметь небольшие отличия. Исправления и дополнения присылайте по адресу aeb [AT] cwi.nl. Сообщения об ошибках в этой программе присылайте по адресу fileutils-bugs [AT] gnu.edu.

ПЕРЕВОД

Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2003