在 Linux 下,strings 命令用于从二进制文件(可执行文件、库、core dump 等)中提取可打印字符串。如果你想“用 strings 找路径”,通常是指:从程序或文件里翻出里面写死的文件路径、URL、配置路径等。
下面按常见场景说明。
strings /bin/ls
/ 的路径strings /bin/ls | grep '/'
例如可能看到:
/etc/passwd
/usr/share/terminfo
/lib64/ld-linux-x86-64.so.2
strings /bin/ls | grep -E '/(etc|usr|var|home|tmp|bin|lib)'
strings myprogram | grep -E '\.conf|\.ini|\.yaml|\.json'
strings myprogram | grep -E 'https?://'
strings -n 6 myprogram
-n 6 表示只显示长度 ≥ 6 的字符串
grep 更精准strings -n 5 myprogram | grep -E '/[a-zA-Z0-9_./-]+'
strings 看不到运行时行为,只能看静态字符串。
如果要“真实路径”,用以下工具:
strace(推荐)strace -f -e trace=file ./myprogram
ltrace(库调用)ltrace -f ./myprogram
lsof(运行中)lsof -p <pid>
strings core | grep '/'
strings /usr/bin/python3 | grep '/usr/lib'
或:
strings ./a.out | grep -E '/(etc|home|var)'
如果你愿意,可以告诉我:
我可以直接给你一条“精准命令”。