How macOS actually works
macOS has three ways to point at a file and they behave very differently.
| Type | Made by | Survives the target moving |
|---|---|---|
| Alias | Finder (⌘L) | Yes — tracks by file ID |
| Symlink | ln -s | No — stores a path |
| Hard link | ln | Yes — it *is* the file |
A Finder alias records both a path and the file's unique ID, so it keeps working when you move the target. It is a macOS-specific format, and the Terminal treats it as an ordinary small file rather than following it.
The Unix standard. Stores a path; breaks if the target moves.
ln -s /path/to/original /path/to/link
find ~ -type l # find all symlinks
find ~ -type l ! -exec test -e {} \; -print # find broken ones
That last command is worth keeping — broken symlinks accumulate silently after moving folders around.
A second directory entry pointing at the same data. There is no "original"; the data survives until every link is deleted.
ln original.txt second-name.txt
Time Machine used hard links extensively before APFS snapshots.
A search tool that follows symlinks can loop forever — a link pointing at its own ancestor creates an infinite tree. Well-built indexers record symlinks but never follow them, which is why a linked folder may appear once rather than being traversed twice.
Hard links are the harder case: the same data with two names, both real, and neither a duplicate in any meaningful sense.
An alias tracks the file even if it moves; a symlink stores a path and breaks. Terminal tools follow symlinks but not aliases.
find ~ -type l ! -exec test -e {} \; -print
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