首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac应用程序如何能够跟踪文件的位置?

Mac应用程序如何能够跟踪文件的位置?
EN

Unix & Linux用户
提问于 2017-11-08 07:34:49
回答 2查看 1.7K关注 0票数 19

我在我的Mac上观察到这样的行为:

  • 用PDF专家打开PDF,对文件做一些更改,在Finder中移动文件,将其保存在PDF Expert中,它将被正确地保存到新的位置。
  • 在像~/foo这样的目录中打开一个shell,用另一个应用程序破坏目录,shell的pwd正确地输出~/.Trash/foo

引擎盖下面发生了什么?这些案例似乎表明,应用程序不只是像emacs那样保持文件的绝对路径(我这样说对吗?),还是完全不同的机制?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-11-08 08:04:03

macos有一个特殊的/.vol/系统,映射到实际的目录和文件。文件和目录可以通过/.vol/<device_id>/<inode_number>访问,而不管文件系统上的文件在哪里。

这是一个很好的小系统。

因此,例如,程序可以获取/Users/jdoe/someFile.txt的inode编号,然后通过/.vol/12345/6789打开它(在本例中,设备id为12345,inode编号为6789)。然后,您可以将/Users/jdoe/someFile.txt移动到任何您想要的位置(在相同的卷上),一切都可以正常工作。您甚至可以编写支持此magic的shell脚本。

ls -di <file>以获取inode编号。

代码语言:javascript
运行
复制
$ ls -di /User/jdoe/someFile.txt
6789 /User/jdoe/someFile.txt

编辑:

您可以使用stat获取卷的id和inode号,根据IMSoP突出显示的链接答案。

GetFileInfo /.vol/12345/6789将返回以前位于/Users/jdoe/someFile.txt中的文件的当前位置。

有关详细信息,请参阅https://stackoverflow.com/questions/11951328/is-there-any-function-to-retrieve-the-path-associated-with-an-inode

票数 21
EN

Unix & Linux用户

发布于 2017-11-08 16:52:21

下面的答案是错误的(见注释)。请忽略

除了给出的好答案外,您的程序很可能只是保存了一个文件句柄,该句柄与目录树中的文件位置无关(在Unix系统上,至少在关闭文件之前,Unix系统甚至会坚持文件删除)。

文件句柄基本上是对文件的直接访问,它独立于目录结构中存在的位置或频率(在硬链接情况下)。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/403244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档