Come posso creare un collegamento simbolico in Terminale?


351

Quale comando viene utilizzato per creare un collegamento simbolico / collegamento software?

Risposte:


543
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Per maggiori informazioni su ln (1) vedere la pagina man .

Il percorso del collegamento simbolico è facoltativo; se omesso, per lnimpostazione predefinita crea un collegamento con lo stesso nome della destinazione, nella directory corrente:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Per creare un collegamento simbolico per sostituire una directory di sistema (ad es. Se si desidera che /Userspunta a un'altra unità disco), è necessario disabilitare la protezione dell'integrità del sistema . Puoi riattivarlo dopo aver impostato il collegamento simbolico.


63
Se solo le pagine man fossero chiare come la tua risposta!
Adrian Lynch,

permesso negato: S puoi darmi un suggerimento? cercando di creare un collegamento simbolico per gli utenti in modo che io possa usarlo su un altro disco rigido e ssd ha solo un collegamento simbolico. grazie
Ewoks,

2
@patrix Ho modificato la mia risposta per chiarire; sentiti libero di modificare ulteriormente.
GRG

4
Curiosità: l' originale non deve necessariamente esistere. Il comando ln -s "This directory is no longer in use" READMEsarebbe perfettamente legittimo, e quindi chiunque eseguisse ls -lvedrebbe il messaggio.
Edward Falk,

1
Per riferimento futuro: non è necessario spostare / Utenti su macOS per risparmiare spazio. È possibile modificare i percorsi della directory principale degli utenti singolarmente nelle Preferenze di Sistema in Utenti e gruppi facendo clic con il pulsante destro del mouse sulle voci dell'elenco utenti.
Peter W.,

73

Il comando viene chiamato ln. Se utilizzato con l'opzione -s, creerà un collegamento simbolico nella directory corrente:

ln -s /any/file/on/the/disk linked-file

1
Il file collegato deve esistere prima? Ottengo un errore di file non trovato sulla destinazione.
AlxVallejo,

2
Il file non (se viene visualizzato un messaggio di errore), ma tutte le directory in qualsiasi percorso. Se sei bloccato, sentiti libero di porre una nuova domanda usando il pulsante Poni domanda in alto a destra. Includi un link a questa domanda per fornire un contesto.
Nohillside

Il collegamento simbolico non dovrebbe esistere prima di eseguire questo comando. Ma per quanto ne so è necessario un percorso valido. Se la cartella del file di output non esiste prima di eseguire questo comando, verrà visualizzato anche un No such file or directoryerrore.
Deniz Kaplan,

34

So che questa domanda si pone esplicitamente sul Terminale, ma se sei in GUI Land e non vuoi entrare in Terminal Land, puoi usare SymbolicLinker . Ciò inserisce un'opzione "Crea collegamento simbolico" nel menu Servizi nel Finder.

Un menu di scelta rapida per una cartella, che mostra un sottomenu "Servizi", con "Crea collegamento simbolico" oscurato

Un menu di scelta rapida per un collegamento simbolico, con "Crea collegamento simbolico" oscurato


3
Mi piacerebbe sapere perché questo è stato sottoposto a downgrade in modo da poter dare risposte di qualità superiore da ora in poi :)
Ben Leggiero,

10
probabilmente perché la domanda era "Come posso creare un collegamento simbolico in Terminale?" Ma non ti sto sottovalutando :)
vedrano,

1
@EdwardFalk Penso che in El Capitan, puoi tenere premuto Command+ Optionmentre trascini un file ... aggiornerà la risposta in seguito
Ben Leggiero,

1
@BenLeggiero Questo rende un alias.
Andy Stewart,

2
@BenLeggerio, La differenza è spiegata qui: apple.stackexchange.com/questions/2991/…
MiB


5

ln -s /some/dir/ ~/Desktop/dir

È inoltre possibile creare un collegamento simbolico per la directory utilizzando lo stesso comando

ln -s "$(pwd)" ~/Desktop/dir

Per creare un collegamento simbolico alla directory corrente in cui ci si trova.


2
Un semplice .(punto) darà il pwd. Non sono necessarie argomentazioni fantasiose :)
Mylogon

@mylogon hahaha mi piace pensare troppo a volte. semplificata la mia risposta!
Gerald,

@mylogon Mi sono appena reso conto che non .funziona su macOS. non ho ancora provato su Linux. l'utilizzo ha ./portato a ciò foo -> ./fooche indica se stesso.
Gerald,

Qual è il comando completo che hai digitato?
Mylogon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.