DD(1)

ИМЯ
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@cwi.nl. Сообщения об ошибках в этой программе присылайте по адресу fileutils-bugs@gnu.ai.mit.edu.

ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003