在 Linux 中使用 XXD 命令

想要数据的十六进制转储(十六进制视图)? xxd 命令可以为您做到这一点。

与任何其他普通命令一样,它从标准输入或文件中获取数据并给出十六进制输出。 它也可以做相反的事情,将十六进制转换为普通字符。

在本教程中,我将向您展示如何在 Linux 中使用 xxd 命令的不同示例。

在你的 Linux 系统上安装 XXD

xxd 实用程序未预安装在大多数 Linux 发行版中,但可以使用默认包管理器轻松安装。

对于 Ubuntu/Debian 基础:

sudo apt install xxd

为了 Fedora/RHEL 基础:

sudo dnf install vim-common

对于基于 Arch 的发行版:

sudo pacman -S xxd

Linux中XXD命令的使用方法

完成安装后,您必须遵循给定的命令语法才能使用 xxd 命令:

xxd [options] [file]

为了便于理解,我将使用名为 Sample.txt 整个教程,其中包含以下内容:

Which Linux distro is your daily driver?
1. Ubuntu
2. Debian
3. RHEL
4. Fedora
5. Arch
6. Gentoo
7. LFS (The GOAT)

创建一个十六进制转储 Sample.txt 文件,我将使用以下命令:

xxd Sample.txt

当然,您可以使用不同的选项来调整 xdd 命令的默认行为。 让我告诉你怎么做。

修剪 xxd 输出中的线条

xxd 命令允许您减少输出中的行。

为此,您必须使用 -s 标记并附加要跳过的初始行数:

xxd -s [lines_to_skip] Filename

所以假设你想从第 5 行开始十六进制转储,这意味着你需要减少前 4 行:

xxd -s 0x40 Sample.txt

正如你所看到的, 它修剪了前 4 行 并从第 5 行开始给了我十六进制转储。

但是如果你想得到最后几行的十六进制转储, 你也可以那样做!

要获取最后 n 行的十六进制转储,您必须按以下方式执行 xxd 命令:

xxd -s -[Last_n_lines] Filename

所以假设我想获取最后 3 行的十六进制转储,那么,我将使用以下内容:

xxd -s -0x30 Sample.txt
在 Linux 中使用 xxd 命令获取最后 n 行的十六进制转储

指定列长度

您可能想要指定应显示多少列,而不是 xxd 默认为您提供的列数 (10)。

为此,您需要使用 -c 标记并附加应在输出中显示的列数:

xxd -c [No_of_columns] Filename

假设我想要 4 列的输出,那么我将使用以下内容:

xxd -c 4 Sample.txt
在 xxd 命令中指定输出中的列数

指定输出长度

它类似于我在如何修剪输出中解释的内容,但在这里,您可以指定从第一行开始需要多少行输出。

要指定输出长度,您所要做的就是使用 -l 标记并指定您想要的输出行数:

xxd -l [Output_length_in_lines] Filename

所以假设我只想要十六进制转储的前 5 行,那么我将使用以下内容:

xxd -l 0x50 Sample.txt
在 linux 的 xxd 命令中指定输出长度

获取二进制输出而不是十六进制

xxd 命令还允许您以二进制而不是十六进制获取输出!

这很简单,二进制输出可以使用 -b 旗帜:

xxd -b Filename

在这里,我转换了我的文本文件 Sample.txt 二进制:

xxd -b Sample.txt
在 Linux 中将文本转换为二进制

以大写字母获取十六进制输出

您可能会发现需要大写字母输出的情况。

您可以使用大写字母轻松获得十六进制输出 -u 标志如图:

xxd -u Filename
在 Linux 中以大写形式获取十六进制输出

再次将十六进制转换为普通文本

因此,如果您将十六进制的输出重定向到一个文件,则有一种方法可以很容易地恢复正常。

供您参考,我正在重做如何首先将十六进制转储的输出重定向到文本文件的整个过程:

将 hext dump 保存到 linux 中的文本文件

所以我将十六进制转储输出保存到 Hex.txt.

现在,如果我想阅读 Hex.txt,我将不得不执行转换。 否则,简直就是头疼。

要扭转这种影响,您将不得不使用 -r 以所示方式标记:

xxd -r Filename
将十六进制转储转换为普通文本

想将十六进制转换为 ASCII? 干得好!

如果您想将十六进制字符串转换为 ASCII,我们为此提供了详细指南:

我希望您会发现本指南对您有所帮助。

如果您有任何疑问,请在评论中告诉我。