On Unix, everything is a file descriptor.
In this case, "everything" includes normal files, directories, partitions (e.g. /dev/sda1
), devices (e.g. /dev/sda
), virtual devices (e.g. /dev/null
) and symlinks.
But what is a "file descriptor" in this case? It's an entry in your file system root, pointing to the data location on your disk or in the memory (for virtual files). Note that e.g. on ext?-filesystems, there's another layer of abstraction between file descriptor and data called "inode".
So in your example, music
is a symlink, which is represented by a file descriptor, just like any other file or directory. But it has a special flag set to identify it as symlink, where a directory would have another flag set defining it as such one. Now the system can interpret the symlink, which is actually just a string containing an absolute or relative path to the target.
It gets only interpreted as directory if you explicitly write a /
behind it, otherwise it's treated as file.