温馨提示×

linux strings和grep区别呢

小樊
40
2026-09-05 13:47:08
栏目: 智能运维

在 Linux 下,stringsgrep 经常一起用,但它们作用和定位完全不同。简单说:

strings:从“非文本文件”里提取可打印字符串
grep:在“文本”里按模式查找内容

下面详细对比一下。


一、strings 是干什么的?

作用

二进制文件、可执行文件、图片、压缩包等非纯文本文件中,提取出人类可读的字符串(默认长度 ≥ 4)。

典型场景

  • 查看程序里硬编码的字符串(路径、URL、错误信息)
  • 分析病毒 / 木马
  • 逆向工程
  • 查看 .so.o、ELF 文件内容

示例

strings /bin/ls

可能输出:

Usage: %s [OPTION]... [FILE]...
ls: cannot access %s

常见参数

strings -n 6 file      # 只显示长度 ≥ 6 的字符串
strings -a file        # 扫描整个文件(不只 data 段)

二、grep 是干什么的?

作用

文本文件或文本流中,按正则表达式搜索匹配行。

典型场景

  • 查日志
  • 搜代码
  • 过滤命令输出

示例

grep "error" app.log
grep -r "main" src/

三、核心区别对比

对比项 strings grep
处理对象 二进制 / 非文本文件 文本文件 / 文本流
主要目的 提取字符串 搜索匹配内容
是否理解正则
输出内容 字符串片段 匹配的行
常配合 grep 使用 可独立使用

四、为什么经常一起用?

因为 strings 提取出来的内容,往往还要再筛一次:

strings binary | grep "http"

含义:

  1. 从二进制里提取字符串
  2. 再找出包含 http 的行

五、一句话总结

  • strings = 从二进制里“掏字”
  • grep = 从文本里“找字”
  • strings + grep = 从二进制里掏字再找字

如果你有具体使用场景(比如分析程序、看日志、逆向),我可以给你更合适的命令示例。

0