-bash: lstat: 命令未找到

Ric*_*mas 6 command-line osx stat darwin

我正在使用运行 El Capitan v 10.11.6 的 Macbook Pro。我正在学习符号链接,在man ln页面中,我发现了以下内容:

符号链接上的 stat(2) 将返回链接到的文件;必须执行 lstat(2) 以获取有关链接的信息。

作为测试,我创建了一个文件的符号链接(在另一个文件系统中,如果重要的话),如下所示:

ln -s /Volumes/foobardir/foobarfile foobarlink

然后我跑去lstat foobarlink获取符号链接文件本身的信息,但我得到了以下输出:

-bash: lstat: command not found

该命令不which lstat返回任何内容,这确认在我的文件路径中没有具有此名称的可执行文件。

我能够执行stat foobarlink,但我不确定返回的统计数据是针对链接文件还是符号链接本身。我确实在该命令的输出中以时间戳形式看到今天的日期,而运行stat foobarfile显示的是几个月前的日期。所以我猜这是我正在寻找的输出,但我想要第二种意见。

顺便说一句,运行which stat返回/usr/bin/stat。一个grep在/usr/bin与所有的可执行文件的目录stat以他们的名义返回以下内容:

  • 数据库状态
  • 差异统计
  • httpdstat.d
  • 统计数据
  • jstatd
  • 锁状态
  • lpstat
  • nfsstat
  • plockstat
  • smpnetstat
  • 状态
  • 状态
  • 乌斯塔特
  • vm_stat

如上所述,我的猜测是stat返回我期望返回的输出lstat。我的问题是:

  • lstat当man lstat识别lstat为有效命令时,为什么显然没有安装在我的系统中?
  • 为什么要包含未随附的可执行文件的手册信息?
  • brew search lstat不返回任何结果。是否可以以lstat某种方式安装到我的本地机器上,这样做有什么好处吗?

use*_*274 15

BSD 手册的第 1 部分是针对一般命令的。第 2 节是关于系统调用的,即,如果使用该C语言或其派生语言为您的系统进行编程,您可能会进行的函数调用。

括号中的数字表示该条目来自手册的哪个部分。在这种情况下,lstat(2)表示此页面提供有关系统调用的信息,而不是可在命令行执行的独立二进制文件。


如果您键入man lstat,您将看到lstat系统调用的手册页。 stat相比之下,是名两系统调用和一个独立的工具。如果您键入man stat,默认情况下您将获得命令行实用程序的手册页。要查看系统调用手册页,您需要明确说明man要搜索手册的哪个部分:

man 2 stat
Run Code Online (Sandbox Code Playgroud)

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/manpages.5.html是一个(过时的)链接,列出了 BSD 手册的所有部分。这些部分在您的系统上是相同的,但我找不到明确列出这些部分的手册页。