Differences between revisions 1 and 2
Revision 1 as of 2010-09-21 00:42:33
Size: 3162
Editor: ?skizzhg
Comment:
Revision 2 as of 2010-09-21 12:14:01
Size: 3369
Comment: minor fixes
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
In sistemi operativi [[WikiPedia:Unix-like OS|simili ad Unix]] (incluso [[Linux]]) ci sono due concetti differenti di collegamento, solitamente chiamati "hard link" e "soft link": In sistemi operativi [[WikiPedia:Unix-like OS|simili ad Unix]] (incluso [[Linux]]) ci sono due concetti differenti di collegamento, solitamente chiamati "collegamenti fisici" e "collegamenti simbolici":
Line 8: Line 8:
 * Un '''hard link''' è solo un nome di un file (e un file può avere diversi nomi). Viene eliminato dal disco solo quando l'ultimo nome viene rimosso. Il numero dei nomi è dato da [[DebianMan:ls|ls(1)]]. Non c'è niente come un nome ''originale'': tutti hanno la stessa importanza; di solito, ma non necessariamente, tutti i nomi di un file si trovano nel filesystem che contiene anche i suoi dati.  * Un '''collegamento fisico''' (hard link) è solo un nome per un file (e un file può avere più di un nome). Viene eliminato dal disco solo quando l'ultimo nome viene rimosso. Il numero dei nomi viene mostrato da [[DebianMan:ls|ls(1)]]. Non esiste un nome ''originale'': tutti hanno la stessa importanza; di solito, ma non necessariamente, tutti i nomi di un file si trovano nel filesystem che contiene anche i suoi dati.
Line 10: Line 10:
 * Un '''soft link''' (o [[SymLink|collegamento simbolico]]) è un animale completamente diverso: è un piccolo file che contiene un particolare percorso. Perciò può puntare a file su filesystem diversi (eventualmente NFS montato da macchine diverse), e non necessitano effettivamente di file esistenti. Quando si accede (con le chiamate di sistema open(2) o stat(2)) un riferimento ad un collegamento simbolico è sostituito dal kernel operante con uno al file denominato dal percorso. (Tuttavia, con rm(1) e unlink(2) viene rimosso il link stesso e non il file a cui punta. lstat(2) e readlink(2) sono speciali chiamate di sistema che leggono lo stato di un collegamento simbolico e il nome del file a cui punta. Per altre chiamate vi è una certa incertezza e variazione tra i sistemi operativi se l'operazione agisce sul collegamento simbolico, o sul file al quale punta).  * Un '''[[SymLink|collegamento simbolico]]''' (o soft link) è una faccenda completamente diversa: è un piccolo file speciale che contiene un percorso. Perciò può puntare a file su filesystem diversi (eventualmente NFS montato da macchine diverse), e non necessessariamente a file esistenti. Quando si accede (con le chiamate di sistema open(2) o stat(2)) ad un riferimento ad un collegamento simbolico, il kernel del sistema operativo lo sostituisce con un riferimento al file indicato dal percorso. (Tuttavia, con rm(1) e unlink(2) viene rimosso il collegamento stesso e non il file a cui punta. lstat(2) e readlink(2) sono speciali chiamate di sistema che leggono lo stato di un collegamento simbolico e il nome del file a cui punta. Per altre chiamate vi è una certa incertezza e variabilità tra i sistemi operativi riguardo all'oggetto su cui agisce l'operazione: il collegamento simbolico o il file al quale punta).
Line 14: Line 14:
Se viene dato un solo file lo collega nella directory corrente, cioè crea un collegamento a tale file nella stessa directory con lo stesso nome al (l'ultimo elemento di) nome di quel file (questa è un'estensione GNU). Altrimenti, se l'ultimo argomento indica una directory esistente, {{{ln}}} crea collegamenti ad ogni file di origine indicato in tale directory, con un nome uguale al (l'ultimo elemento) nome del file sorgente (si veda sotto la descrizione dell'opzione ''--no-dereference''). Se invece vengono passati due file crea un collegamento chiamato ''dest'' al file di origine. Se l'ultimo argomento non è una directory e più di due file sono specificati, è un errore. Se viene dato un solo file lo collega nella directory corrente, cioè crea un collegamento a tale file nella stessa directory con un nome uguale al (l'ultimo elemento del) nome di quel file (questa è un'estensione GNU). Altrimenti, se l'ultimo argomento indica una directory esistente, {{{ln}}} crea collegamenti ad ogni file di origine indicato in tale directory, con un nome uguale al (l'ultimo elemento del) nome del file sorgente. (Si veda però sotto la descrizione dell'opzione ''--no-dereference''). Se invece vengono passati due file crea un collegamento chiamato ''<destinazione>'' al file ''<origine>''. Se l'ultimo argomento non è una directory e vengono specificati più di due file, si ottiene un errore.
Line 16: Line 16:
Lo standard di {{{ln}}} è di non rimuovere file o collegamenti simbolici già esistenti (può essere usato per bloccare certe intenzioni: avrà successo solo se ''dest'' non esiste già), ma può essere forzato con l'opzione -f. Il comportamento standard di {{{ln}}} è di non rimuovere file o collegamenti simbolici già esistenti. (Perciò può essere usato a scopo di blocco: avrà successo solo se ''<destinazione>'' non esiste già.) Ma può essere forzato con l'opzione -f.
Line 18: Line 18:
Solo l'utente root può creare un collegamento fisico ad una directory su implementazioni esistenti. POSIX vieta la chiamata di sistema link(2) e a {{{ln}}} di fare collegamenti fisici alle directory (ma non vieta ai collegamenti fisici di attraversare filesystem confinanti). Nelle implementazioni esistenti, la creazione un collegamento fisico ad una directory, quando ciò è possibile, è permessa solo all'utente root. POSIX vieta alla chiamata di sistema link(2) e a {{{ln}}} di fare collegamenti fisici alle directory, ma non vieta ai collegamenti fisici di uscire fuori dai confini di un filesystem).

Translation(s): English - Italiano

(!) ?Discussion


ln crea collegamenti tra file.

In sistemi operativi simili ad Unix (incluso Linux) ci sono due concetti differenti di collegamento, solitamente chiamati "collegamenti fisici" e "collegamenti simbolici":

  • Un collegamento fisico (hard link) è solo un nome per un file (e un file può avere più di un nome). Viene eliminato dal disco solo quando l'ultimo nome viene rimosso. Il numero dei nomi viene mostrato da ls(1). Non esiste un nome originale: tutti hanno la stessa importanza; di solito, ma non necessariamente, tutti i nomi di un file si trovano nel filesystem che contiene anche i suoi dati.

  • Un collegamento simbolico (o soft link) è una faccenda completamente diversa: è un piccolo file speciale che contiene un percorso. Perciò può puntare a file su filesystem diversi (eventualmente NFS montato da macchine diverse), e non necessessariamente a file esistenti. Quando si accede (con le chiamate di sistema open(2) o stat(2)) ad un riferimento ad un collegamento simbolico, il kernel del sistema operativo lo sostituisce con un riferimento al file indicato dal percorso. (Tuttavia, con rm(1) e unlink(2) viene rimosso il collegamento stesso e non il file a cui punta. lstat(2) e readlink(2) sono speciali chiamate di sistema che leggono lo stato di un collegamento simbolico e il nome del file a cui punta. Per altre chiamate vi è una certa incertezza e variabilità tra i sistemi operativi riguardo all'oggetto su cui agisce l'operazione: il collegamento simbolico o il file al quale punta).

Per impostazione predefinita, ln crea collegamenti fisici tra i file, con l'opzione -s li crea simbolici (o 'soft').

Se viene dato un solo file lo collega nella directory corrente, cioè crea un collegamento a tale file nella stessa directory con un nome uguale al (l'ultimo elemento del) nome di quel file (questa è un'estensione GNU). Altrimenti, se l'ultimo argomento indica una directory esistente, ln crea collegamenti ad ogni file di origine indicato in tale directory, con un nome uguale al (l'ultimo elemento del) nome del file sorgente. (Si veda però sotto la descrizione dell'opzione --no-dereference). Se invece vengono passati due file crea un collegamento chiamato <destinazione> al file <origine>. Se l'ultimo argomento non è una directory e vengono specificati più di due file, si ottiene un errore.

Il comportamento standard di ln è di non rimuovere file o collegamenti simbolici già esistenti. (Perciò può essere usato a scopo di blocco: avrà successo solo se <destinazione> non esiste già.) Ma può essere forzato con l'opzione -f.

Nelle implementazioni esistenti, la creazione un collegamento fisico ad una directory, quando ciò è possibile, è permessa solo all'utente root. POSIX vieta alla chiamata di sistema link(2) e a ln di fare collegamenti fisici alle directory, ma non vieta ai collegamenti fisici di uscire fuori dai confini di un filesystem).

Collegamenti esterni

  • La pagina di manuale di ln(1).