I decided to stick my lessons learned from last night into a single file. It's probably simpler than I make it out to be, I just don't understand enough programming to know which steps can be winnowed out without breaking things.
Files are, essentially, sequences of blocks on a storage medium linked together by pointers. The directory is a file which contains pointers to the things inside it. In Unix-style file systems, there is a table containing initial pointers called inodes, and every file actually has an inode associated with it, and an inode contains (among other things) a use-count. When an inode has a use-count of 0 it means it can be garbage collected. When you create a file, you allocate an inode, set the use count to 1, create an entry in a directory with the inode number, and start attaching blocks of storage to it. When you link to a file, you create an entry in a directory and copy the inode number into the entry, and increment the inode's use-count.
So, that's not quite an alias - each of those links is a legitimate reference to exactly the same data object.
From:
no subject
Files are, essentially, sequences of blocks on a storage medium linked together by pointers. The directory is a file which contains pointers to the things inside it. In Unix-style file systems, there is a table containing initial pointers called inodes, and every file actually has an inode associated with it, and an inode contains (among other things) a use-count. When an inode has a use-count of 0 it means it can be garbage collected. When you create a file, you allocate an inode, set the use count to 1, create an entry in a directory with the inode number, and start attaching blocks of storage to it.
When you link to a file, you create an entry in a directory and copy the inode number into the entry, and increment the inode's use-count.
So, that's not quite an alias - each of those links is a legitimate reference to exactly the same data object.