Provided by: vim-common_7.3.429-2ubuntu2_amd64 bug

ИМЯ

       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).