Linux xxd命令入门示例教程

你是否需要使用二进制或十六进制格式显示文件内容? 寻找可以执行此操作的命令行实用程序? 那,你很幸运,因为存在一个名为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/No
01|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

Linux 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跳过几行?

假设您不希望完整文件的hexdump。 相反,您希望该工具从特定行开始转换。 然后可以使用-s命令实现。

例如,如果您希望xxd从第3行开始生成十六进制转储,那么您可以告诉xxd如何执行此操作:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -s 0x30 linuxidc.com.txt

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

因此,在这种情况下,您可以看到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

Linux xxd命令入门示例教程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12112.html