Xxd linux команда примеры

Учебник по командам Linux xxd для начинающих (с примерами)

Нужен шестнадцатеричный дамп для текстового файла? Ищете утилиту командной строки, которая может это сделать? Что ж, вам повезло, так как существует команда xxd, которая может сделать это за вас. В этом уроке мы обсудим xxd на нескольких простых для понимания примерах. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на компьютере с Ubuntu 22.04 LTS.

Для чего используется команда Linux xxd?

Команда xxd в Linux позволяет создать шестнадцатеричный дамп или даже сделать наоборот. Ниже приведен его синтаксис:

И вот как это объясняет справочная страница инструментов:

xxd creates a hex dump of a given file or standard input. It can also convert a hex dump back to its original binary form. Like
uuencode(1) and uudecode(1) it allows the transmission of binary data in a `mail-safe' ASCII representation, but has the advantage
of decoding to standard output. Moreover, it can be used to perform binary file patching.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает xxd.

Q1. Как использовать команду xxd?

Это просто. Например, предположим, что у вас есть текстовый файл test.txt с содержимым, как показано ниже:

No.|Country|Yes/No
01|India|Y
02|US|Y
03|Australia|Y

04|China|N
05|Russia|Y
06|Japan|Y

07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y

Вот как вы можете использовать xxd для преобразования содержимого файла в шестнадцатеричный формат:

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032 No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c |US|Y.03|Austral
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67 Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468 paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61 Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e land|Y.10|Irelan
00000090: 647c 590a d|Y.

Q2. Как пропустить несколько строк с xxd?

Предположим, вам не нужен шестнадцатеричный дамп всего файла. Вместо этого вы хотите, чтобы инструмент начал преобразование с определенной строки. Затем этого можно добиться с помощью команды -s.

Читайте также:  Вставить командную строку linux

Например, если вы хотите, чтобы xxd создавал шестнадцатеричный дамп, начиная со строки 3, то вот как вы указываете xxd сделать это:

00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67 Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468 paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61 Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e land|Y.10|Irelan
00000090: 647c 590a d|Y.

Таким образом, вы можете видеть, что в этом случае шестнадцатеричный дамп создается, начиная со строки 3.

Q3. Как ограничить вывод xxd определенной длиной?

В предыдущем разделе мы обсуждали, как заставить xxd начать преобразование с определенной точки. Но есть также способ ограничить его преобразование в определенную точку. Это можно сделать с помощью параметра командной строки -l.

Например, чтобы убедиться, что xxd создает дамп только для первых трех строк test.txt, используйте его следующим образом:

Вот результат, который он произвел:

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032 No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c |US|Y.03|Austral

Q4. Как установить длину столбца?

Если вы хотите, чтобы xxd выдавал меньше или больше столбцов на выходе, используйте параметр -c и укажите там количество столбцов. Вот пример команды, использующей эту опцию:

00000000: 4e6f 2e7c 43 No.|C
00000005: 6f75 6e74 72 ountr
0000000a: 797c 5965 73 y|Yes
0000000f: 2f4e 6f0a 30 /No.0
00000014: 317c 496e 64 1|Ind
00000019: 6961 7c59 0a ia|Y.
0000001e: 3032 7c55 53 02|US
00000023: 7c59 0a30 33 |Y.03
00000028: 7c41 7573 74 |Aust
0000002d: 7261 6c69 61 ralia
00000032: 7c59 0a0a 30 |Y..0
00000037: 347c 4368 69 4|Chi
0000003c: 6e61 7c4e 0a na|N.
00000041: 3035 7c52 75 05|Ru
00000046: 7373 6961 7c ssia|
0000004b: 590a 3036 7c Y.06|
00000050: 4a61 7061 6e Japan
00000055: 7c59 0a0a 30 |Y..0
0000005a: 377c 5369 6e 7|Sin
0000005f: 6770 616f 72 gpaor
00000064: 657c 590a 30 e|Y.0
00000069: 387c 536f 75 8|Sou
0000006e: 7468 204b 6f th Ko
00000073: 7265 617c 4e rea|N
00000078: 0a30 397c 46 .09|F
0000007d: 696e 616c 61 inala
00000082: 6e64 7c59 0a nd|Y.
00000087: 3130 7c49 72 10|Ir
0000008c: 656c 616e 64 eland
00000091: 7c59 0a |Y.

Таким образом, вы можете видеть, что на выходе было создано только 5 столбцов.

Читайте также:  Проверить скорость соединения linux

Q5. Как заставить xxd создавать двоичный дамп?

Да, это тоже возможно. Опция командной строки -b заставляет xxd создавать дамп в двоичном формате. Вот что говорит man-страница об этом инструменте:

-b | -bits
Switch to bits (binary digits) dump, rather than hexdump. This option writes octets as eight digits "1"s and "0"s instead
of a normal hexadecimal dump. Each line is preceded by a line number in hexadecimal and followed by an ascii (or ebcdic)
representation. The command line switches -r, -p, -i do not work with this mode.

Заключение

Как видите, команда xxd полезна, если вы имеете дело с содержимым шестнадцатеричных и двоичных файлов. Здесь, в этом уроке, мы только что обсудили некоторые основные опции, которые предлагает xxd. После того, как вы закончите практиковать их, перейдите на справочную страницу инструментов, чтобы узнать больше об этом.

Источник

Оцените статью
Adblock
detector