Creare un collegamento simbolico di directory in Ubuntu [chiuso]


247

Di seguito è riportato il mio codice per la creazione di un collegamento simbolico di una directory:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Ho già creato la directory /etc/nginx. Voglio solo che il contenuto della directory di origine ( /usr/local/nginx/conf/) sia nel contenuto della directory di destinazione ( /etc/nginx). Ma quando eseguo il codice, /etc/nginxcontiene una directory chiamata conf, anziché il contenuto di conf. Quella directory contiene i contenuti che desidero, ma nella posizione sbagliata.

Perché ha inserito una directory nella cartella di destinazione, invece di inserire semplicemente il contenuto della directory nella cartella di destinazione?


Puoi anche usare File (browser di file predefinito). Fare clic destro sulla cartella che si desidera collegare> opzione "Crea collegamento". Creerà una cartella collegata che puoi spostare e rinominare in base alle tue esigenze.
John Linhart,

4
Usa la bind mountfunzione linux . esempio
gkiko il

Risposte:



30

Questo è ciò che lnè documentato da fare quando la destinazione esiste già ed è una directory. Se si desidera /etc/nginxad essere un collegamento simbolico, piuttosto che contenere un link simbolico, è meglio non creare come una directory prima!


51
La tua risposta ha senso solo nel contesto in cui il lettore conosce già la risposta. È inutile per chiunque voglia porre la domanda
Ricardo Saporta,

1
Posso effettivamente creare un collegamento simbolico a una radice di un dispositivo USB montato (quindi non posso prima cancellare questa cartella)?
Grigory Kornilov,

1
@GrigoryKornilov puoi creare un link simbolico a tutto ciò che vuoi, incluso qualcosa che non esiste. Questa domanda riguardava piuttosto il luogo in cui viene creato il collegamento simbolico (non dove punta a). Un particolare percorso nel filesystem è o un file normale o è una directory o è un link simbolico (o è un socket o pipe o dispositivo). Non può essere più di una di queste cose contemporaneamente (cioè non puoi avere più di un file distinto con lo stesso identico nome).
Celada,

10

Nello script è utile qualcosa del genere:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

impedisce prima di ricreare il collegamento simbolico "cattivo" in loop dopo aver rieseguito lo script


1
Eccellente! Questa è la soluzione esatta. non è necessario creare la directory se già esistente. È davvero un buon tweak per l'hard link e affondarlo nel buco nero (/ dev / null)
Cosmo Arun
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.