strings 是 Linux 下常用的一个命令(通常来自 binutils),用于从二进制文件、内存 dump、日志等里面提取可打印字符串。如果你遇到 strings 报错,可以按下面思路排查。
command not found: strings原因:系统没装 binutils,或不在 PATH 中。
解决:
# Debian / Ubuntu
sudo apt update
sudo apt install binutils
# CentOS / RHEL
sudo yum install binutils
# 或
sudo dnf install binutils
# Arch
sudo pacman -S binutils
验证:
which strings
strings --version
strings: command not found(在容器/最小化系统)很多 Alpine / 容器镜像 默认没有 strings。
解决:
# Alpine
apk add binutils
# 或换用 busybox
busybox strings file
strings: invalid option -- 'x'原因:参数写错(不同版本支持不同)。
常见正确用法:
strings file
strings -n 6 file # 最小长度 6
strings -a file # 扫描整个文件
strings -e l file # 指定编码(l=16-bit little endian)
查看帮助:
strings --help
man strings
strings: No such file or directory原因:文件路径错或没权限。
解决:
ls -l file
file file
# 加权限
sudo strings file
strings: File truncated / Cannot read原因:
解决:
cp file file.bak
strings file.bak
或:
strings < file
解决:
strings -n 8 bigfile | head
strings bigfile | less
grepgrep -a -o '[[:print:]]\{4,\}' file
odod -c file | grep ' '
with open("file","rb") as f:
data=f.read()
import re
print("\n".join(re.findall(rb"[ -~]{4,}", data).decode()))
如果你愿意,可以贴出:
我可以更精准地帮你定位问题。