📅  最后修改于: 2020-12-07 08:11:41             🧑  作者: Mango
Linux字符串命令用于将字符串字符返回到文件中。它主要侧重于确定二进制文件(非文本文件)的内容并从中提取文本。
从可执行文件中找出文本对于人类来说是一项复杂的任务。二进制文件(例如程序文件)包含人类可读的文本。如果使用cat或更少的命令,这些文件将很大。可能会导致终端挂断。
文件中可以有两种类型的字符:可打印和不可打印。字母数字字符,标点符号或空格称为可打印字符;除可打印字符,所有字符都称为不可打印字符。
用简单的话来说,我们可以说它从文件中提取出可打印的字符,以便其他命令可以使用没有不可打印字符的字符串。
在这里,出现了一个问题,为什么我们要在可执行文件中放置文本?部署应用程序或软件时,大多数开发人员都会打包二进制文件。但是最好在二进制文件中打包一些ASCII文本。这将对用户和开发人员了解有关可执行文件的更多信息很有帮助。
因此, 字符串命令对于确定非文本文件的内容很有用。
使用字符串命令很简单,只需将文件名作为参数传递并执行即可。让我们通过一个例子来理解它。
我们有一个名为gyp.el的系统文件。要从此文件中提取字符串,请执行以下命令:
strings gyp.el
考虑以下输出:
默认情况下, 字符串命令仅打印至少四个字符长的字符序列。但是,我们可以使用-n选项强制更改此限制。它允许我们传递数字来表示极限。
建议使用较高的限制,因为使用的数字越短,您看到的垃圾越多。
要设置两个字符的限制,请执行以下命令:
strings -n 2 gyp.el
考虑以下输出:
虽然上面的输出包含了太多的字符串,因此它是复杂的识别这两个<字符>,但我们能理解事情是如何工作的字符串命令。
如果我们有一个包含冗长输出的文件,则可以通过更少的管道进行传输。它将显示较少的输出,并且我们可以根据需要滚动和附加输出。
要通过更少的方式传递限制,请执行以下命令:
strings gyp.el | less
考虑以下输出:
我们可以通过向下滚动来附加上面的输出。
字符串命令不仅限于文件。它使我们可以查看计算机系统的RAM。我们需要使用Sudo特权,因为我们正在访问/ dev / mem,它保存了系统主内存的蓝图。执行以下命令:
sudo strings /dev/mem | less
在上面的命令中,我们使用更少的值来限制输出。考虑以下输出:
字符串命令的默认行为包含空格作为可打印字符。因此,如果我们有一个字符串“ Javatpoint是学习技术的最佳平台之一”,那么字符串命令将返回整个文本。
它不考虑新行字符和回车为可打印字符。
要print识别字符和回车作为可打印字符的字符串,执行命令如下:
strings -w File_name
字符串命令提供四种类型的编码选项,如下所示:
s: 7位字节(用于ASCII,ISO 8859)
S: 8位字节
b: 16位bigendian
l: 16位littleendian
默认选项是“ s”。一个7位字节。
我们可以更改编码;要更改它,请执行以下命令:
strings -e S file_name
要么
strings --encoding=S file_name
在上述命令中,我们将编码指定为'S ',这意味着8位字节编码。您可以指定上述任何一个选项,只需将“ S”替换为您选择的编码字母即可。
如果重复使用相同的选项,则无需每次都指定。相反,您可以创建一个文件并在该文件中指定选项。
要创建用于指定选项的文件,请执行以下命令:
vi stringout
上面的命令将打开vi编辑器。在这里,我们使用vi编辑器创建文件;您可以选择任何编辑器。
按ESC和'i'键进入插入模式。键入您要指定的选项,如下所示:
-f -o -n -S
输入选项后,按ESC和:wq!保存文件。按键考虑下图:
要使用指定的选项运行字符串命令,请执行以下命令:
strings @stringsopts gyp.el
上面的命令将使用指定的选项执行该命令。 gyp.el是我们正在使用的文件名;您可以输入文件名。考虑以下输出:
如果在使用字符串命令时卡在任何地方。您可以使用帮助选项从终端获取帮助。要获取帮助,请执行以下命令:
strings -help
考虑以下输出:
您还可以通过执行以下命令随时阅读本手册:
man strings
要检查所使用的字符串的版本,请执行以下命令之一:
strings -v
strings -V
strings -version
上面的命令将显示字符串的安装版本。考虑以下输出: