Linux strings 命令

17 Mar 2025 | 4 分钟阅读

Linux strings 命令用于从文件中返回字符串字符。它主要侧重于确定二进制文件(非文本文件)的内容并从中提取文本。

对于人类来说,从可执行文件中查找文本是一项复杂任务。可执行文件,如程序文件,包含人类可读的文本。这些文件通常体积庞大,如果我们使用 cat 或 less 命令,可能会导致终端无响应。

文件中的字符可以分为两类:可打印字符和不可打印字符。字母数字字符、标点符号或空格被称为可打印字符;除了可打印字符之外,所有字符都被称为不可打印字符。

简单来说,我们可以说它从文件中提取可打印字符,以便其他命令可以使用这些字符串而无需处理不可打印字符

那么,问题来了,为什么我们要将文本放在可执行文件中?当应用程序或软件部署时,大多数开发者会将二进制文件打包。但将一些 ASCII 文本打包到二进制文件中也是有益的。这将有助于用户和开发人员更深入地了解可执行文件。

因此,strings 命令对于确定非文本文件的内容非常有用。

如何使用它?

strings 命令的使用非常直接,只需将文件名作为参数传递并执行即可。让我们通过一个例子来理解。

我们有一个名为 gyp.el 的系统文件。要从该文件中提取字符串,请按以下方式执行命令:

考虑下面的输出

Linux strings command

自定义字符限制

默认情况下,strings 命令仅打印至少四个字符长的字符序列。但是,我们可以使用-n选项强制更改此限制。它允许我们传递一个数字来指定限制。

建议使用较高的限制,因为您使用的数字越短,看到的“垃圾”信息就越多。

要将限制设置为两个字符,请执行以下命令:

考虑下面的输出

Linux strings command

虽然上面的输出包含过多的字符串,使得识别两个字符的字符串变得复杂,但我们可以理解 strings 命令是如何工作的。

通过管道传递限制

如果文件包含大量输出,我们可以通过 less 对其进行管道化。它将显示更少的输出,我们可以根据需要滚动和追加输出。

要将限制通过管道传递给 less,请按以下方式执行命令:

考虑下面的输出

Linux strings command

我们可以通过向下滚动来追加上述输出。

如何使用 Strings 命令查看 RAM?

strings 命令不仅限于文件。它允许我们查看我们计算机系统的 RAM。我们需要使用 Sudo 权限,因为我们正在访问/dev/mem,它保存了我们系统主内存的蓝图。按以下方式执行命令:

在上面的命令中,我们使用 less 来限制输出。请看下面的输出:

Linux strings command

包含空格

strings 命令的默认行为将空格视为可打印字符。因此,如果我们有一个字符串,“Javatpoint 是学习技术的最佳平台之一”,那么 strings 命令将返回整个文本。

它不将换行符和回车符视为可打印字符。

要打印一个将换行符和回车符识别为可打印字符的字符串,请按以下方式执行命令:

更改编码

strings 命令提供四种类型的编码选项,如下所示:

s:7 位字节(用于 ASCII、ISO 8859)

S:8 位字节

b:16 位大端序

l:16 位小端序

默认选项是's',即 7 位字节。

我们可以更改编码;要更改它,请执行以下命令:

在上面的命令中,我们将编码指定为'S',表示 8 位字节编码。您可以指定上述任何选项,只需将'S'替换为您选择的编码字母即可。

从文件中读取选项

如果您反复使用相同的选项,则无需每次都指定。相反,您可以创建一个文件并将选项指定在该文件中。

要创建用于指定选项的文件,请执行以下命令:

上面的命令将打开 vi 编辑器。这里我们使用 vi 编辑器创建一个文件;您可以选择任何您喜欢的编辑器。

ESC'i'键进入插入模式。输入您要指定的选项,如下所示:

>

输入选项后,按ESC:wq!键保存文件。请看下面的图片:

Linux strings command

要使用指定的选项运行 strings 命令,请按以下方式执行命令:

上面的命令将使用指定的选项执行命令。gyp.el 是我们使用的文件名;您可以输入您的文件名。请看下面的输出:

Linux strings command

获取帮助

如果您在使用 strings 命令时遇到任何问题。您可以通过帮助选项从终端获取帮助。要获得帮助,请执行以下命令:

考虑下面的输出

Linux strings command

您也可以随时通过执行以下命令来阅读手册:

检查 Strings 版本

要检查您正在使用的 strings 的版本,请执行以下命令之一:

上面的命令将显示已安装的 strings 版本。请看下面的输出:

Linux strings command
下一主题Linux Print