No Unix, tudo é um descritor de arquivos .
Nesse caso, "tudo" inclui arquivos, diretórios, partições normais (por exemplo, /dev/sda1
), dispositivos (por exemplo, /dev/sda
), dispositivos virtuais (por exemplo, /dev/null
) e links simbólicos.
Mas o que é um "descritor de arquivo" nesse caso? É uma entrada na raiz do sistema de arquivos, apontando para o local dos dados no disco ou na memória (para arquivos virtuais). Observe que, por exemplo nos sistemas de arquivos ext, há outra camada de abstração entre descritor de arquivo e dados chamado "inode".
Portanto, no seu exemplo, music
é um link simbólico, representado por um descritor de arquivo, como qualquer outro arquivo ou diretório. Mas ele tem um sinalizador especial definido para identificá-lo como symlink, onde um diretório teria outro sinalizador definido como tal. Agora o sistema pode interpretar o symlink, que é na verdade apenas uma string contendo um caminho absoluto ou relativo para o alvo.
Ele só será interpretado como diretório se você escrever explicitamente um /
por trás dele, caso contrário, ele será tratado como arquivo.