bionic (1) xxd.1.gz

Provided by: xxd_8.0.1453-1ubuntu1.13_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).