温馨提示×

linux strings和grep区别在哪

小樊
44
2026-10-08 09:24:33
栏目: 智能运维

在 Linux 下,strings 和 grep 都是常用命令,但用途和关注对象完全不同。简单说:

strings:从“非文本文件”里把“ printable 字符串”提取出来
grep:在“文本”里按“模式”搜索内容

下面详细对比。


一、strings 是干什么的

作用

从二进制文件、可执行文件、core 文件、压缩包等非纯文本文件中,提取出可打印的字符串。

典型用途

  • 查看程序里硬编码的字符串(错误信息、路径、URL)
  • 分析病毒 / 木马样本
  • 提取二进制里的配置或关键字
  • 逆向工程、取证

示例

strings /bin/ls

输出类似:

Usage: ls [OPTION]... [FILE]...
https://www.gnu.org/

特点

  • 输入:不一定是文本
  • 输出:所有可打印字符串
  • 不做“条件匹配”,只是“提取”

二、grep 是干什么的

作用

在文本流或文本文件中,按正则 / 关键字搜索匹配行。

典型用途

  • 查日志
  • 过滤命令输出
  • 搜索代码
  • 文本分析

示例

grep "error" app.log

或结合管道:

ps aux | grep nginx

特点

  • 输入:文本(或文本流)
  • 输出:匹配的行
  • 核心是“搜索 / 过滤”

三、核心区别对比

对比项 strings grep
主要目的 提取字符串 搜索匹配
输入类型 二进制 / 文本 文本
是否理解文件结构 否(扫字节) 否(按行)
是否支持正则 不支持(只提取) 支持
常见组合 strings file | grep xxx 单独使用

四、为什么经常一起用?

因为它们互补:

strings binary | grep "password"

意思:

  1. strings 先把二进制里的字符串提出来
  2. grep 再从中找关键字

✅ 这是安全分析和排错中非常经典的用法。


五、一句话总结

  • strings = “从乱七八糟的文件里把字捞出来”
  • grep = “在文字里找你想要的那一行”

如果你愿意,我也可以给你举实战例子(比如分析一个 ELF、查隐藏字符串、日志排查)。

0 踩