在 Linux 下,strings 和 grep 都是常用命令,但用途和关注对象完全不同。简单说:
strings:从“非文本文件”里把“ printable 字符串”提取出来
grep:在“文本”里按“模式”搜索内容
下面详细对比。
strings 是干什么的从二进制文件、可执行文件、core 文件、压缩包等非纯文本文件中,提取出可打印的字符串。
strings /bin/ls
输出类似:
Usage: ls [OPTION]... [FILE]...
https://www.gnu.org/
grep 是干什么的在文本流或文本文件中,按正则 / 关键字搜索匹配行。
grep "error" app.log
或结合管道:
ps aux | grep nginx
| 对比项 | strings | grep |
|---|---|---|
| 主要目的 | 提取字符串 | 搜索匹配 |
| 输入类型 | 二进制 / 文本 | 文本 |
| 是否理解文件结构 | 否(扫字节) | 否(按行) |
| 是否支持正则 | 不支持(只提取) | 支持 |
| 常见组合 | strings file | grep xxx |
单独使用 |
因为它们互补:
strings binary | grep "password"
意思:
strings 先把二进制里的字符串提出来grep 再从中找关键字✅ 这是安全分析和排错中非常经典的用法。
strings = “从乱七八糟的文件里把字捞出来”grep = “在文字里找你想要的那一行”如果你愿意,我也可以给你举实战例子(比如分析一个 ELF、查隐藏字符串、日志排查)。