你是否需要使用二进制或十六进制格式显示文件内容? 寻找可以执行此操作的命令行实用程序? 那,你很幸运,因为存在一个名为xxd的命令可以为你做到这一点。 在本教程中,我们将使用一些易于理解的示例来讨论xxd。 但在我们这样做之前,值得一提的是这里的所有例子都是在Ubuntu 18.04 LTS机器上测试过的。
xxd 命令可以将指定文件或标准输入以十六进制转储,也可以把十六进制转储转换成原来的二进制形式。
Linux xxd 命令Linux中的xxd命令允许您创建一个hexdump甚至反过来。 以下是它的语法:
xxd [OPTIONS] [file]
以下是该工具的手册页的解释:
xxd创建给定文件或标准输入的十六进制转储。 它还可以将十六进制转储转换回其原始二进制形式。 与uuencode(1) 和 uudecode(1)一样,它允许以“mail-safe”ASCII表示传输二进制数据,但具有解码到标准输出的优点。 而且,它可以用于执行二进制文件修补。
下面是一些Q&A风格的例子,可以让您更好地了解xxd是如何工作的。
Q1. 如何使用xxd命令?这很简单。 例如,假设您有一个文本文件'linuxidc.com.txt',其内容如下所示:
No.|Country|Yes/No01|China|Y
02|US|Y
03|Australia|Y
04|India|N
05|Russia|Y
06|Japan|Y
07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y
以下是如何使用xxd将文件内容转换为十六进制:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd linuxidc.com.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跳过几行?
假设您不希望完整文件的hexdump。 相反,您希望该工具从特定行开始转换。 然后可以使用-s命令实现。
例如,如果您希望xxd从第3行开始生成十六进制转储,那么您可以告诉xxd如何执行此操作:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -s 0x30 linuxidc.com.txt
这是产生的输出:
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|China|N00000040: 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.
因此,在这种情况下,您可以看到hexdump在第3行开始生成。
Q3. 如何将xxd输出限制为特定长度?在上一节中,我们讨论了如何使xxd从特定点开始转换。 但也有一种方法可以将其转换限制在特定点。 这可以使用-l命令行选项完成。
例如,要确保xxd仅为linuxidc.com.txt的前三行创建转储,请按以下方式使用它:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -l 0x30 linuxidc.com.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|N.03|Austral Q4. 如何设置列长?
如果希望xxd在输出中生成更少或更多的列,请使用-c选项并指定其中的列数。 这是使用此选项的示例命令:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -c 5 linuxidc.com.txt