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.