在 Linux 里,strings 和 grep 是两个用途不同但经常配合使用的命令。简单说:
strings:从二进制文件里“提取”可打印的字符串grep:在文本(或输入流)里“查找”匹配的内容strings 用来从非文本文件(比如可执行文件、库文件、core dump)中,把里面能显示的字符串(ASCII / UTF-8)提取出来。
strings /bin/ls
输出类似:
Usage: ls [OPTION]... [FILE]...
GNU coreutils
...
⚠️ 它本身不做搜索,只是“把字符串弄出来”。
grep 是在文本中搜索匹配模式的行。
grep "error" log.txt
也可以配合管道:
cat file | grep "main"
因为 strings 输出的是文本,所以通常这样配合:
strings binary_file | grep "password"
意思是:
strings 把二进制里的字符串提取出来grep 再从这些字符串里找关键词| 对比项 | strings | grep |
|---|---|---|
| 输入 | 二进制 / 文件 | 文本 / 标准输入 |
| 功能 | 提取字符串 | 搜索匹配 |
| 是否搜索 | ❌ 不搜索 | ✅ 搜索 |
| 常见场景 | 分析程序 | 查日志 / 文本 |
strings = “把字挖出来”
grep = “在字里找东西”
如果你愿意,我也可以给你举一个实际排查问题的完整例子(比如从程序里找硬编码密码)。