table of contents
DD(1) | General Commands Manual | 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¶
ОКРУЖЕНИЕ¶
При работе обычным образом используются значения переменных 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
1998-11 | GNU fileutils 4.0 |