首先,我对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 %k
and stat -f "%k"
)。
所以,总而言之,我有三个问题:
1)为什么stat -f /dev/disk0s2
没有给我预期的输出?
2) 这些 %k、%z 和 %b 参数是什么?手册中是否提到了它们?
3) 上述参数(例如,stat -f %k
和stat -f "%k"
)周围的引号是什么意思?这是 Unix 命令语法中的通用内容吗?
提前致谢。
OS X 上预装的命令行工具来自 FreeBSD,但许多在线指南可能会假设 Linux 环境和 GNU 工具。它们并不总是相同的。
比较FreeBSD stat和GNU stat的两个手册页。在 FreeBSD 中,
-f
设置输出格式并采用相应的参数。在 GNU 中,stat-f
询问有关文件系统(不是命名文件)的输出,并且不带任何参数。因此,1) 结果不同,因为您使用的是不同的工具,2) FreeBSD 手册页的“格式”下提到了格式选项。3)引号与它本身并不真正相关
stat
,而是与外壳相关。?*[]
需要引用包含 shell 特殊字符(如空格或全局字符等)的命令行参数,以防止shell处理它们。但是%
并不特别(至少在那种情况下不是),所以它是否被引用并不重要。