Учебник по командам Linux xxd для начинающих (с примерами)
На этой странице
- Для чего используется команда Linux xxd?
- Q1. Как использовать команду xxd?
- Вопрос 2. Как пропустить несколько строк с xxd?
- Вопрос 3. Как ограничить вывод xxd определенной длиной?
- Q4. Как установить длину столбца?
- В5. Как заставить xxd создавать двоичный дамп?
- Заключение
Нужен шестнадцатеричный дамп для текстового файла? Ищете утилиту командной строки, которая может это сделать? Что ж, вам повезло, так как существует команда xxd, которая может сделать это за вас. В этом уроке мы обсудим xxd на нескольких простых для понимания примерах. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на компьютере с Ubuntu 22.04 LTS.
Для чего используется команда Linux xxd?
Команда xxd в Linux позволяет создать шестнадцатеричный дамп или даже сделать наоборот. Ниже приведен его синтаксис:
xxd [OPTIONS] [file]
И вот как это объясняет справочная страница инструментов:
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 для преобразования содержимого файла в шестнадцатеричный формат:
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
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.
Например, если вы хотите, чтобы xxd создавал шестнадцатеричный дамп, начиная со строки 3, то вот как вы указываете xxd сделать это:
xxd -s 0x30 test.txt
Вот результат:
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, используйте его следующим образом:
xxd -l 0x30 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 и укажите там количество столбцов. Вот пример команды, использующей эту опцию:
xxd -c 5 test.txt
И вот вывод:
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 столбцов.
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 -b test.txt
Вот пример:
Заключение
Как видите, команда xxd полезна, если вы имеете дело с содержимым шестнадцатеричных и двоичных файлов. Здесь, в этом уроке, мы только что обсудили некоторые основные опции, которые предлагает xxd. После того, как вы закончите практиковать их, перейдите на справочную страницу инструментов, чтобы узнать больше об этом.