温馨提示×

linux strings和grep区别啥

小樊
43
2026-09-11 09:54:48
栏目: 智能运维

在 Linux 里,stringsgrep两个用途不同但经常配合使用的命令。简单说:


一句话区别

  • strings:从二进制文件里“提取”可打印的字符串
  • grep:在文本(或输入流)里“查找”匹配的内容

1️⃣ strings 是干什么的

strings 用来从非文本文件(比如可执行文件、库文件、core dump)中,把里面能显示的字符串(ASCII / UTF-8)提取出来。

例子

strings /bin/ls

输出类似:

Usage: ls [OPTION]... [FILE]...
GNU coreutils
...

常见用途

  • 查看程序里硬编码的路径、错误信息
  • 分析病毒 / 恶意程序
  • 逆向工程
  • 查看依赖库名

⚠️ 它本身不做搜索,只是“把字符串弄出来”。


2️⃣ grep 是干什么的

grep 是在文本中搜索匹配模式的行

例子

grep "error" log.txt

也可以配合管道:

cat file | grep "main"

常见用途

  • 日志分析
  • 代码搜索
  • 文本过滤

3️⃣ 它们经常一起用

因为 strings 输出的是文本,所以通常这样配合:

strings binary_file | grep "password"

意思是:

  1. strings 把二进制里的字符串提取出来
  2. grep 再从这些字符串里找关键词

4️⃣ 对比表

对比项 strings grep
输入 二进制 / 文件 文本 / 标准输入
功能 提取字符串 搜索匹配
是否搜索 ❌ 不搜索 ✅ 搜索
常见场景 分析程序 查日志 / 文本

5️⃣ 记忆小技巧

strings = “把字挖出来”
grep = “在字里找东西”

如果你愿意,我也可以给你举一个实际排查问题的完整例子(比如从程序里找硬编码密码)。

0