xxd

Autres langues

Langue: ru

Version: 55896 (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

ИМЯ

xxd - Ñоздаёт предÑтавление файла в виде шеÑтнадцатеричных кодов или выполнÑет обратное преобразование.

КОМÐÐДÐÐЯ СТРОКÐ

xxd -h[elp]
xxd [ключи] [входной_файл [выходной_файл]]
xxd -r[evert] [ключи] [входной_файл [выходной_файл]]

ОПИСÐÐИЕ

xxd Ñоздаёт предÑтавление указанного файла или данных, прочитанных из потока Ñтандартного ввода, в виде шеÑтнадцатеричных кодов. Эта команда также может выполнить обратное преобразование заданных шеÑтнадцатеричными кодами данных в иÑходный бинарный формат. Подобно командам uuencode(1) и uudecode(1), она позволÑет выполнÑÑ‚ÑŒ преобразование бинарных данных в ASCII-код, который можно передавать по Ñлектронной почте, однако, помимо Ñтого, программа xxd позволÑет выполнÑÑ‚ÑŒ декодирование в поток Ñтандартного вывода, а также может применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð»Ð°Ñ‚Ð¾Ðº Ð´Ð»Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ñ… файлов.

КЛЮЧИ ЗÐПУСКÐ

ЕÑли входной_файл не задан, то ÑоответÑтвующие данные читаютÑÑ Ð¸Ð· потока Ñтандартного ввода. Ð’ Ñлучае, еÑли в качеÑтве входного_файла иÑпользуетÑÑ Ñимвол `-', иÑточником данных также выÑтупает поток Ñтандартного ввода. Ð’ том Ñлучае, еÑли не указан выходной_файл (или вмеÑто него иÑпользуетÑÑ Ñимвол `-' ), результат Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Ð² поток Ñтандартного вывода.

Обратите внимание, что иÑпользуетÑÑ "ленивый" алгоритм разбора ключей, который не проверÑет более одной буквы ключа, еÑли в Ñтом ключе не иÑпользуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€. Пробелы между единÑтвенным Ñимволом ключа и ÑоответÑтвующим параметром не ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð±Ñзательными. Параметры ключей могут быть заданы Ñ Ð¸Ñпользованием деÑÑтичного, шеÑтнадцатеричного или воÑьмеричного формата. Таким образом, ключи -c8, -c 8, -c 010 и -cols 8 ÑвлÑÑŽÑ‚ÑÑ Ñ€Ð°Ð²Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ñ‹Ð¼Ð¸.

-a | -autoskip
Включает автоматичеÑкий пропуÑк: вмеÑто поÑледовательноÑти нулевых Ñтрок иÑпользуетÑÑ Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñимвол '*'. По умолчанию не применÑетÑÑ.
-b | -bits
ВмеÑто шеÑтнадцатеричного кода иÑпользуютÑÑ Ð±Ð¸Ñ‚Ñ‹ (двоичные цифры). При иÑпользовании Ñтого ключа вмеÑто обычного шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÐºÑ‚ÐµÑ‚Ð¾Ð² иÑпользуютÑÑ Ð½Ð°Ð±Ð¾Ñ€Ñ‹ из воÑьми Ñимволов "1" и "0". ÐšÐ°Ð¶Ð´Ð°Ñ Ñтрока предварÑетÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ Ñтроки в шеÑтнадцатеричном виде, а завершаетÑÑ Ñимвольным предÑтавлением (в виде ascii или ebcdic). Ключи -r, -p, -i в Ñтом режиме не работают.
-c кол | -cols кол
Задаёт количеÑтво октетов <кол>, которое выводитÑÑ Ð½Ð° каждой Ñтроке. По умолчанию иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ 16 (-i: 12, -ps: 30, -b: 6). МакÑимально допуÑтимое значение: 256.
-E | -EBCDIC
ИзменÑет ÑпоÑоб ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñимволов в правой колонке Ñ ASCII на EBCDIC. Этот ключ не изменÑет шеÑтнадцатеричное предÑтавление. Данный ключ не имеет ÑмыÑла, еÑли иÑпользуютÑÑ ÐºÐ»ÑŽÑ‡Ð¸ -r, -p или -i.
-g байт | -groupsize байт
ПозволÑет выполнÑÑ‚ÑŒ группировку указанного количеÑтва <байтов> (две шеÑтнадцатеричные цифры или воÑемь битов), отделÑÑ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ друг от друга пробелами. Значение -g 0 применÑетÑÑ Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ð·Ð° от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸. По умолчанию иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ <байт> равное 2 в обычном режиме и 1 в битовом режиме. Группировка не применÑетÑÑ Ð² режимах postscript и include.
-h | -help
Выводит Ñправку по доÑтупным ключам командной Ñтроки и завершает работу программы. Создание шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ выполнÑетÑÑ.
-i | -include
ПозволÑет Ñоздавать вывод в Ñтиле подключаемых заголовочных файлов Ñзыка C. Вывод Ñодержит полноценное определение ÑтатичеÑкого маÑÑива данных, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ ÑоответÑтвует имени входного файла, еÑли xxd не Ñчитывает данные из потока Ñтандартного ввода.
-l длина | -len длина
Завершает работу поÑле запиÑи заданного в параметре <длина> количеÑтва октетов.
-p | -ps | -postscript | -plain
ИÑпользует непрерывный формат вывода шеÑтнадцатеричного кода, извеÑтный как "проÑтой" Ñтиль или Ñтиль "postscript".
-r | -revert
ИзменÑет ÑмыÑл операции на противоположный: позволÑет выполнÑÑ‚ÑŒ преобразование шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² бинарный код (или применÑÑ‚ÑŒ результат в качеÑтве заплаты). ЕÑли вывод проиÑходит не в поток Ñтандартного вывода, то xxd выполнÑет добавление кода к ÑоответÑтвующему файлу. При иÑпользовании комбинации ключей -r -p проиÑходит чтение "проÑтого" шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ· иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о номерах Ñтрок и какого-либо Ñпециального раÑÐºÑ€Ð¾Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº. Пробелы и Ñимволы новой Ñтроки могут вÑтречатьÑÑ Ð² любом меÑте иÑходных данных.
-seek Ñмещение
При иÑпользовании поÑле ключа -r : добавлÑÑ‚ÑŒ указанное <Ñмещение> к файловым позициÑм, обнаруженным в иÑходных данных.
-s [+][-]seek
Ðачинает работу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ абÑолютного (или отноÑительного) <ÑмещениÑ> в байтах во входном_файле. + указывает, что Ñмещение ÑвлÑетÑÑ Ð¾Ñ‚Ð½Ð¾Ñительным по отношению к текущей файловой позиции в потоке Ñтандартного ввода (беÑÑмыÑленно, еÑли чтение проиÑходит не из потока Ñтандартного ввода). - указывает, что должно быть прочитано указанное количеÑтво Ñимволов от конца ввода (либо, еÑли ÑочетаетÑÑ Ñ + : перед текущей позиции файла в потоке Ñтандартного ввода). ЕÑли ключ -s не иÑпользуетÑÑ, то xxd начинает работу от текущей позиции в файле.
-u
ИÑпользует шеÑтнадцатеричные цифры в верхнем региÑтре. По умолчанию иÑпользуютÑÑ Ñ†Ð¸Ñ„Ñ€Ñ‹ в нижнем региÑтре Ñимволов.
-v | -version
Отображает информацию о верÑии программы.

ПОДВОДÐЫЕ КÐÐœÐИ

xxd -r обладает вÑтроенным интеллектом Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о номерах Ñтрок. ЕÑли возможен поиÑк по входному файлу, то номера Ñтрок в начале каждой Ñтроки шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть неупорÑдоченными, некоторые Ñтроки могут быть пропущены или переÑекатьÑÑ Ð´Ñ€ÑƒÐ³ Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¼. Ð’ Ñтих ÑлучаÑÑ… xxd иÑпользует lseek(2) Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° к Ñледующей позиции. ЕÑли поиÑк по входному файлу невозможен, то допуÑтимы только пропуÑки Ñтрок, которые заполнÑÑŽÑ‚ÑÑ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸ байтами.

xxd -r никогда не выводит Ñообщений об ошибках. МуÑор пропуÑкаетÑÑ Ð¼Ð¾Ð»Ñ‡Ð°.

При редактировании шеÑтнадцатеричных предÑтавлений бинарных файлов обращайте внимание, что xxd -r пропуÑкает в Ñтроке ввода любые данные поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтаточного количеÑтва колонок шеÑтнадцатеричных данных (Ñм. ключ -c). Это означает, что изменениÑ, внеÑенные в колонки Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð½Ñ‹Ð¼Ð¸ Ñимволами ascii (или ebcdic), вÑегда игнорируютÑÑ. При обратном преобразовании шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñтиле postscript Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды xxd -r -p количеÑтво колонок не учитываетÑÑ. Ð’ Ñтом Ñлучае раÑпознаютÑÑ Ð²Ñе Ñимволы, которые похожи на пары шеÑтнадцатеричных цифр.

Обратите внимание на различие между командами

% xxd -i файл

и

% xxd -i < файл

Команда xxd -s +seek может отличатьÑÑ Ð¾Ñ‚ xxd -s seek, поÑкольку Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы "отмотать" данные на входе назад, иÑпользуетÑÑ Ð²Ñ‹Ð·Ð¾Ð² lseek(2). При иÑпользовании `+' поведение будет отличатьÑÑ, еÑли входные данные поÑтупают Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° Ñтандартного ввода, а Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² файле Ñтандартного ввода не находитÑÑ Ð² начале файла к тому моменту, когда программа xxd запущена и приÑтупает к чтению ввода. ÐижеÑледующие примеры помогут проÑÑнить (или ещё больше запутать!) Ñитуацию...

Отмотка назад потока Ñтандартного ввода; необходимо, поÑкольку 'cat' уже выполнила чтение до конца потока Ñтандартного ввода:

% sh -c 'cat > plain_copy; xxd -s 0 > hex_copy' < file

Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x480 (= 1024+128). Символ `+' означает "отноÑительно текущей позиции", таким образом `128' добавлÑетÑÑ Ðº первому килобайту, где завершает работу dd:

% sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet' < file

Вывод шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ позиции в файле 0x100 (= 1024-768):

% sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet' < file

Ð’ то же времÑ, Ñледует заметить, что подобные Ñитуации вÑтречаютÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾ редко, так что Ñимвол `+' обычно не иÑпользуетÑÑ. Ðвтор предпочитает наблюдать за работой xxd Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ strace(1) или truss(1) в тех ÑлучаÑÑ…, когда применÑетÑÑ ÐºÐ»ÑŽÑ‡ -s.  

ПРИМЕРЫ


ВывеÑти вÑÑ‘, кроме первых трёх Ñтрок (0x30 байтов) файла file :

% xxd -s 0x30 file


ВывеÑти три Ñтроки (0x30 байтов) от конца файла
file :

% xxd -s -0x30 file


ВывеÑти 120 байтов в виде непрерывного шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ 20 октетов в Ñтроке:

% xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d616e75616c207061
676520666f7220787864220a2e5c220a2e5c2220
32317374204d617920313939360a2e5c22204d61
6e207061676520617574686f723a0a2e5c222020
2020546f6e79204e7567656e74203c746f6e7940
7363746e7567656e2e7070702e67752e6564752e


ВывеÑти первые 120 байтов Ñтой Ñтраницы Ñправочника по 12 октетов в Ñтроке:

% xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
000000c: 616e 7561 6c20 7061 6765 2066 anual page f
0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\".
0000024: 2e5c 2220 3231 7374 204d 6179 .\" 21st May
0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\" Ma
000003c: 6e20 7061 6765 2061 7574 686f n page autho
0000048: 723a 0a2e 5c22 2020 2020 546f r:..\" To
0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t
0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.


Показать дату из файла xxd.1:

% xxd -s 0x28 -l 12 -c 12 xxd.1
0000028: 3231 7374 204d 6179 2031 3939 21st May 199


Скопировать входной_файл в выходной_файл Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ 100 байтов Ñо значением 0x00 в начало файла:

% xxd входной_файл | xxd -r -s 100 > выходной_файл


Заменить дату в файле xxd.1:

% echo '0000029: 3574 68' | xxd -r - xxd.1
% xxd -s 0x28 -l 12 -c 12 xxd.1
0000028: 3235 7468 204d 6179 2031 3939 25th May 199


Создать 65537-байтный файл, вÑе байты которого имеют значение 0x00, кроме поÑледнего байта, который должен иметь значение 'A' (0x41):

% echo '010000: 41' | xxd -r > file


Создать шеÑтнадцатеричное предÑтавление Ñтого файла Ñ Ð¸Ñпользованием автоматичеÑкого пропуÑка:

% xxd -a -c 12 file
0000000: 0000 0000 0000 0000 0000 0000 ............
*
000fffc: 0000 0000 40 ....A

Создать 1-байтный файл, Ñодержащий Ñимвол 'A'. ЧиÑло поÑле '-r -s' добавлÑетÑÑ Ðº номерам Ñтрок, найденным в файле; иначе говорÑ, предшеÑтвующие байты пропуÑкаютÑÑ:

% echo '010000: 41' | xxd -r -s -0x10000 > file

xxd можно иÑпользовать в качеÑтве фильтра в редакторе, например в vim(1), чтобы Ñоздать шеÑтнадцатеричное предÑтавление облаÑти между отметками `a' и `z':

:'a,'z!xxd

Ð’Ñ‹ можете иÑпользовать xxd в качеÑтве фильтра в редакторе, например в vim(1), Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из шеÑтнадцатеричного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ отметками `a' и `z':

:'a,'z!xxd -r

Ð’Ñ‹ можете иÑпользовать xxd в качеÑтве фильтра в редакторе, например в vim(1), Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… из единÑтвенной Ñтроки шеÑтнадцатеричного предÑтавлениÑ. ПомеÑтите курÑор в ÑоответÑтвующую Ñтроку и наберите

!!xxd -r

Чтобы прочитать единÑтвенный Ñимвол из канала ÑвÑзи:

% xxd -c1 < /dev/term/b &
% stty < /dev/term/b -echo -opost -isig -icanon min 1
% echo -n foo > /dev/term/b

ВОЗВРÐЩÐЕМЫЕ ЗÐÐЧЕÐИЯ

Программа xxd завершает работу Ñо Ñледующими значениÑми:
0
Ошибки не обнаружены.
-1
ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ поддерживаетÑÑ (выполнение xxd -r -i пока невозможно).
1
Ошибка при разборе ключей командной Ñтроки.
2
Проблемы во входном файле.
3
Проблемы в выходном файле.
4,5
Ð–ÐµÐ»Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾Ð¸Ñка недоÑтижима.

СМОТРИ ТÐКЖЕ

uuencode(1), uudecode(1), patch(1)

ПРЕДУПРЕЖДЕÐИЕ

СтранноÑÑ‚ÑŒ Ñтой программы ÑоответÑтвует оÑобенноÑÑ‚Ñм мозга её ÑоздателÑ. ИÑпользуйте её на Ñвой Ñтрах и риÑк. Копируйте файлы, отÑлеживайте вызовы, ÑтановитеÑÑŒ волшебником.

ВЕРСИЯ

Эта Ñтраница Ñправочника документирует xxd верÑии 1.7.

ÐВТОР


(c) 1990-1997 Юрген Вайгерт (Juergen Weigert)
<jnweiger@informatik.uni-erlangen.de>

Ð’Ñ‹ можете Ñвободно раÑпроÑтранÑÑ‚ÑŒ программу Ñо ÑÑылкой на менÑ.
ЕÑли иÑпользование Ñтой программы принеÑло вам какой-то доход, поделитеÑÑŒ Ñо мной.
ЕÑли вы потерÑли деньги, то Ñ Ñ‚ÑƒÑ‚ не причём.

Первый вариант Ñтраницы Ñправочника напиÑан Тони Ðаджентом (Tony Nugent)
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
Ðебольшие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑены Брамом Мооленааром (Bram Moolenaar). Страница отредактирована Юргеном Вайгертом (Juergen Weigert).