-bash:lstat:找不到命令

-bash:lstat:找不到命令

我使用的是运行 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中的 A返回以下内容:/usr/binstat

  • 数据库统计
  • 差异统计
  • httpdstat.d
  • 统计数据
  • 统计数据
  • 锁状态
  • 参数统计
  • NFS统计
  • 时钟统计
  • SNMP网络统计
  • SNMP状态
  • 统计数据
  • 乌斯塔特
  • 虚拟机状态

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

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

答案1

BSD 手册的第 1 部分是通用命令。第 2 部分用于系统调用,IEC,如果使用该语言或其派生语言之一为系统进行编程,则可能会进行函数调用。

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


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

man 2 stat

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

相关内容