您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux字符串占用空间统计方法

时间:06-20来源:作者:点击数:
CDSY,CDSY.XYZ

这个命令:

strings your_file | awk '{total += length + 1} END {print total}'

我们来逐步解释它的含义:


一、strings your_file

这是 strings 命令,来自于 binutils 工具包。它的作用是:

从二进制文件中提取可打印的 ASCII 字符串。

也就是说,它会从 your_file 这个二进制文件中找出所有“可见的文本字符串”,一行一行输出。


二、awk '{total += length + 1} END {print total}'

这部分是 awk 脚本,对 strings 命令的输出做处理。

重点解释:
✅ length 是什么?

在 awk 中,length 是一个内建函数,用于返回当前行的长度(字符串长度)。

例如:

echo "hello" | awk '{print length}'
# 输出: 5

所以在这个脚本中:

total += length + 1

表示:每一行的长度加 1(因为每行原本有个 \n 被去掉了,或者表示 null terminator \0),然后加到 total 变量中。

✅ 为什么要加 1?

这是因为 strings 提取出来的每个字符串在原文件中,应该以 null 字符 \0 结尾(这是 C 字符串的约定)。但 strings 输出的时候是按行输出的,不会显示 \0

所以如果你想估算这些字符串在原始二进制文件中实际占用的字节数,你需要把每一行的长度加上一个字节(对应 \0)。


三、最终含义总结:
strings your_file | awk '{total += length + 1} END {print total}'

这个命令的作用是:

估算 your_file 中所有以 null 结尾的可打印字符串在文件中总共占用了多少字节。

  • length 来自 awk,表示当前行的长度。
  • 每行加 1,是因为在二进制中这些字符串是以 \0 结尾的。
  • total 累加所有行的长度 + 1,最后输出这个总字节数。
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐