strings 和 grep 都是 Linux 下常用的文本工具,但用途和适用场景完全不同。下面从“是什么、做什么、怎么用、区别”几个角度说明。
strings 用来从二进制文件(或任意文件)中提取可打印的字符串。
strings /bin/ls
输出类似:
/lib64/ld-linux-x86-64.so.2
usage: %s [-AbCGHhklLnrRSTtUuVvWwZ] [file ...]
...
grep 用来在文本中搜索匹配的内容(按行)。
grep "error" app.log
输出:
2024-01-01 10:00:01 error: connection failed
| 对比项 | strings | grep |
|---|---|---|
| 主要用途 | 从二进制/任意文件中提取字符串 | 在文本中搜索匹配内容 |
| 输入文件 | 二进制、文本都行 | 通常是文本 |
| 处理单位 | 连续可打印字符 | 行 |
| 是否搜索 | ❌ 不搜索 | ✅ 搜索 |
| 是否提取 | ✅ 提取 | ❌ 不提取 |
| 常见场景 | 逆向、调试、取证 | 日志分析、配置查找 |
它们经常一起用:
strings binary_file | grep "password"
含义:
strings 从二进制文件中提取字符串grep 在这些字符串中搜索 passwordstrings 是“从二进制里掏字符串”,grep 是“在文本里找匹配”。
如果你愿意,我也可以:
strings -n、grep -a 这种容易混淆的点grep -a 和 strings 的区别