strings 和 grep 都是 Linux/Unix 下常用的命令行工具,但用途不同、侧重点不同。下面从“是什么、干什么、怎么用、什么时候用”来对比说明。
strings:从二进制文件中提取可打印字符串
strings a.out
输出类似:
/lib64/ld-linux-x86-64.so.2
puts
Hello, world!
grep:在文本中搜索匹配的内容
grep "error" app.log
| 对比项 | strings | grep |
|---|---|---|
| 处理对象 | 二进制文件 / 任意文件 | 文本文件 |
| 工作方式 | 提取可打印字符串 | 行匹配 |
| 是否理解文件格式 | ❌ 不理解 | ❌ 不理解 |
| 是否支持正则 | ❌(本身不支持) | ✅ 强 |
| 输出内容 | 文件中的字符串 | 匹配的行 |
| 常见场景 | 逆向、取证、分析程序 | 日志、代码、文本搜索 |
grep 看二进制文件的问题grep "hello" a.out
strings 搜索文本的问题strings app.log | grep "error"
grepstrings a.out | grep "password"
strings app | grep "http"
grep -R "error" /var/log
strings负责“从二进制里把字符串挖出来”,grep负责“在文本里找你关心的内容”。
如果你愿意,我也可以: