关于文件系统stat命令的一些问题

关于文件系统stat命令的一些问题

首先,我对 shell 命令完全一无所知。所以,请耐心等待。另外,我正在使用 OS X,但如果可能的话,我很高兴能得到 Unix 通用性的答案。

我正在尝试执行命令stat -f [some parameters here] [volume name]

根据其他地方的参考资料,这种形式的最简单的命令stat -f /dev/disk0s2在语法上是正确的。但是我有以下内容:

 stat -f /dev/disk0s2
 /dev/disk0s2

根据这里(https://www.computerhope.com/unix/stat.htm),例如,我应该得到一个充满信息的段落。就我而言,我最感兴趣的是通过 stat 命令获取的块大小。

也在这里 (https://apple.stackexchange.com/questions/42509/how-to-get-hfs-filesystem-blocksize),其中提到了参数“%k、%z、%b”。但是在 stat 手册中(即通过使用man stat)我找不到这样的参数。此外,我不知道为什么在那里使用引号(例如,我已经看到了stat -f %kand )。stat -f "%k"

所以,总结来说,我有三个问题:

1)为什么stat -f /dev/disk0s2没有给我预期的输出?

2) 这些 %k、%z 和 %b 参数是什么?手册中是否提到了它们?

3)上述参数两边的引号(例如,stat -f %kstat -f "%k")是什么意思?这是 Unix 命令语法中的通用内容吗?

提前致谢。

答案1

OS X 上预装的命令行工具来自 FreeBSD,但许多在线指南可能会假设 Linux 环境和 GNU 工具。它们并不总是一样的。

比较两个手册页FreeBSD 统计GNU 统计。在 FreeBSD 中,-f设置输出格式并采用相应的参数。在 GNU stat 中,-f询问有关文件系统(而不是指定文件)的输出,并且不带任何参数。

因此,1) 结果不同,因为您使用的是不同的工具,2) FreeBSD 手册页的“格式”下提到了格式选项。 3)引号实际上与本身无关stat,而是与外壳相关。包含 shell 特殊字符(如空格或全局字符?*[]等)的命令行参数需要用引号引起来,以防止从处理它们。但%并不特殊(至少在这种情况下不是),所以是否被引用并不重要。

相关内容