I comandi 'ln' e 'rm' hanno funzionato esattamente così in tutti i filesystem UNIX dall'inizio degli anni '70. Mac OSX, BSD e Linux ereditano tutti questo design originale.
Di per sé, un file UNIX non ha nome, solo un numero di inode o inum. Ma puoi accedervi solo attraverso una voce in uno speciale file "directory" che associa un nome all'inum in questione; non è possibile specificare direttamente l'inum.
Una directory è essa stessa un file, quindi è necessario accedere anche esso tramite la directory (un altro) e così via, attraverso una serie di nomi di directory delimitato da barre (/), noto come un "percorso". Un percorso inizia nella "directory di lavoro corrente" del processo a meno che il nome non inizi con un "/", nel qual caso inizia con la directory principale del file system. Ad esempio, se il nome del percorso non contiene caratteri "/", si prevede che sia una voce nella directory corrente.
Un file non di directory può avere un numero qualsiasi di nomi di percorso, noti come "collegamenti reali", e continuerà a esistere fino a quando tutti i suoi nomi di percorso non saranno stati rimossi e l'ultimo processo avrà chiuso il file. Quindi il file viene effettivamente eliminato e il suo spazio contrassegnato come disponibile per il riutilizzo. Cioè, puoi creare () o aprire () un file collegato singolarmente e quindi scollegarlo () in modo che non appaia più nello spazio dei nomi del file system, ma il file continuerà a esistere fino a quando non lo chiudi. Ciò è utile per i file temporanei temporanei che non verranno letti da nessun altro programma.
Sebbene le directory abbiano numeri di inode, la maggior parte dei file system non consente collegamenti rigidi ad essi; possono apparire solo in un'altra directory. (Un'eccezione insolita è il file system HFS + di Mac OSX; ciò consente il funzionamento dei backup di Time Machine.) È comunque possibile creare "collegamenti software" alle directory (o qualsiasi altro file). Un collegamento software assomiglia a una voce della directory tranne per il fatto che contiene un altro nome di percorso anziché un inum.
Ogni file UNIX ha un proprietario, un gruppo e autorizzazioni di accesso. È necessario ma non sufficiente che ti consentano di aprire il file; è inoltre necessario disporre almeno dell'autorizzazione di esecuzione per ogni directory nel percorso che si utilizza per fare riferimento ad essa. Ecco perché non esiste un modo standard per aprire un file UNIX in base al suo numero di inode; ciò aggirerebbe un importante meccanismo di sicurezza ampiamente utilizzato.
Ma questo non spiega perché non ci possa essere un modo standard per un utente root (privilegiato) di aprire un file per numero di inode, poiché il controllo delle autorizzazioni viene comunque ignorato. Ciò sarebbe molto utile per alcune funzioni di gestione del sistema come i backup. Per quanto ne so, esistono meccanismi di questo tipo, ma sono tutti specifici del filesystem; non esiste un modo generale per farlo per qualsiasi filesystem UNIX.