想要数据的十六进制转储(十六进制视图)? 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

指定列长度
您可能想要指定应显示多少列,而不是 xxd 默认为您提供的列数 (10)。
为此,您需要使用 -c
标记并附加应在输出中显示的列数:
xxd -c [No_of_columns] Filename
假设我想要 4 列的输出,那么我将使用以下内容:
xxd -c 4 Sample.txt

指定输出长度
它类似于我在如何修剪输出中解释的内容,但在这里,您可以指定从第一行开始需要多少行输出。
要指定输出长度,您所要做的就是使用 -l
标记并指定您想要的输出行数:
xxd -l [Output_length_in_lines] Filename
所以假设我只想要十六进制转储的前 5 行,那么我将使用以下内容:
xxd -l 0x50 Sample.txt

获取二进制输出而不是十六进制
xxd 命令还允许您以二进制而不是十六进制获取输出!
这很简单,二进制输出可以使用 -b
旗帜:
xxd -b Filename
在这里,我转换了我的文本文件 Sample.txt
二进制:
xxd -b Sample.txt

以大写字母获取十六进制输出
您可能会发现需要大写字母输出的情况。
您可以使用大写字母轻松获得十六进制输出 -u
标志如图:
xxd -u Filename

再次将十六进制转换为普通文本
因此,如果您将十六进制的输出重定向到一个文件,则有一种方法可以很容易地恢复正常。
供您参考,我正在重做如何首先将十六进制转储的输出重定向到文本文件的整个过程:

所以我将十六进制转储输出保存到 Hex.txt
.
现在,如果我想阅读 Hex.txt
,我将不得不执行转换。 否则,简直就是头疼。
要扭转这种影响,您将不得不使用 -r
以所示方式标记:
xxd -r Filename

想将十六进制转换为 ASCII? 干得好!
如果您想将十六进制字符串转换为 ASCII,我们为此提供了详细指南:
我希望您会发现本指南对您有所帮助。
如果您有任何疑问,请在评论中告诉我。