How macOS actually works
Two apps can watch the same file; rename it, and one follows while the other loses it. The difference is identity.
A path — /Users/sam/Documents/report.pdf — names a location. Move or rename the file and the path now points at nothing (or worse, at a different file placed there later).
An identifier — the file's inode/file ID on its volume — names the *thing*. It survives renames and moves within the volume, because it is the file's row in the filesystem, not its address.
See both:
ls -i report.pdf # inode number
stat -f "%i %N" report.pdf
A symlink stores a path — move the target, dead link. A Finder alias (and the modern API version, a bookmark) stores the identifier plus hints — move the target anywhere on the volume and it resolves. This is also how recent-files lists in well-built apps track documents you reorganise.
Two directory entries, one inode:
ln a.txt b.txt
ls -i a.txt b.txt # same number
Neither is the original; the data lives while any name does.
Identifiers are per-volume. Copy to another disk and it is a new file with a new identity — every pointer that tracked the original ends at the volume's edge.
Users think in names and places, and results must display them. Robust tools resolve a result's path at click time and handle the miss gracefully — a file that moved between index updates is a stale row, not a crash. The identity machinery is why the *good* misses are rare: on APFS, most churn is renames, which FSEvents reports well enough to follow.
They store the file's identifier as well as a path, and resolve by identity within the volume.
The filesystem's identity record for a file. ls -i shows its number; names are pointers to it.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Download for Mac