ИМЯ
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