Sì e no :-)
In UNIX, il contenuto di un file sono distinti dalle voci di directory per quel file. È possibile avere più voci di directory che puntano agli stessi contenuti (cercare inode per una descrizione di come funziona) e, ecco il difficile:
Tutte quelle voci di directory sono uguali. Anche se uno può essere stato creato per primo, non c'è niente di speciale in questo. Se lo rimuovi, il contenuto non scompare, solo la voce della directory. Il contenuto scompare quando l'inode ha zero voci di directory che puntano ad esso (e tutti i processi chiudono il file - Sono stato morso prima cercando di cancellare lo spazio su disco eliminando i file di registro solo per trovarlo, perché un processo ha ancora il file open, i contenuti del file non vengono ripristinati anche se non vi sono voci di directory che puntano a loro).
Questo è per collegamenti fissi.
I collegamenti software sono un po 'più complicati. Creano un "file" di ordinamento (un inode separato), contenente il percorso del file di destinazione. E quei collegamenti sono non uguale a. L'eliminazione dell'originale ti lascerà con un link morbido che non punta da nessuna parte.
Poiché gli inode sono univoci su un determinato file system, i collegamenti fisici non possono fare riferimento a dati su un file system diverso.
I collegamenti software non hanno questa limitazione poiché memorizzano il percorso del file di destinazione, non il suo inode.
La seguente trascrizione può aiutare:
$ echo hello >f1
$ ln f1 f2
$ ln -s f1 f3
$ ls -ial f*
7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f1
7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
hello
$ cat f2
hello
$ cat f3
hello
$ rm f1
$ ls -ial f*
7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
cat: f1: No such file or directory
$ cat f2
hello
$ cat f3
cat: f3: No such file or directory
ho usato solo le ultime quattro cifre del numero di inode per mantenere la voce breve (e non colpito con numeri di inode come 43910096366994672
) ma si può vedere che f1
e f2
hanno esattamente lo stesso inode mentre f3
è diverso.È inoltre possibile vedere che il contenuto del file creato originariamente come f1
sopravvive alla sua eliminazione perché f2
fa ancora riferimento a esso.
Tuttavia, poiché f3
fa riferimento al nome f1
anziché al suo inode, si verifica un errore nel tentativo di utilizzarlo.
parte: Hai devi piace quando giocattoli UNIX con voi come questo:
$ ls f*
f2 f3
$ cat f3 # What the ...?
cat: f3: No such file or directory
Quasi divertente come la creazione di un file chiamato spaziobackspacex e poi guardando qualcuno tenta di cancellarlo :-)
'rm \'? Non vedo come il backspace (^?) Lo renderebbe più complicato :) –
Unode