在Linux中使用XXD命令
通过实际示例了解如何在 Linux 中使用 XXD 命令。本综合指南将帮助您了解 XXD 的特性和功能。
想要数据的十六进制转储(十六进制视图)吗? xxd 命令可以为您做到这一点。
与任何其他普通命令一样,它从标准输入或文件中获取数据并给出十六进制输出。它还可以执行相反的操作,将十六进制转换为普通字符。
在本教程中,我将引导您通过不同的示例了解如何在 Linux 中使用 xxd 命令。
在 Linux 系统上安装 XXD
大多数 Linux 发行版中并未预安装 xxd 实用程序,但可以使用默认包管理器轻松安装。
对于 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,我们为此提供了详细指南:
我希望本指南对您有所帮助。
如果您有任何疑问,请在评论中告诉我。