collegamento simbolico alla directory già esistente


12

Esiste un modo corretto di collegare /home/user/app/publica /home/user/public_html, in considerazione del fatto che la destinazione esiste già?

Se lo faccio ln -s /home/user/app/public /home/user/public_html, finisco per avere /home/user/public_html/public.

Immagino che sarebbe possibile anche invertire l'azione come ln -s /home/user/public_html /home/user/app/public, tuttavia non sono sicuro di come evitare /home/user/app/public/public_htmlil risultato finale.

Risposte:


13

Fammi capire il problema nel modo giusto

La tua fonte è /home/user/public_htmle presumo che abbia dei file. E vuoi creare un collegamento a questa directory direttamente in /home/user/app/public. In questo modo, quindi, potresti fare qualcosa di simile ls /home/user/app/publice vedere i file che esistono su /home/user/public_html.

Se questo è corretto, allora la tua fonte è /home/user/public_htmle l'obiettivo è /home/user/app/public. Il comando corretto è questo:

ln -s /home/user/public_html /home/user/app/public

Assicurati solo che /home/user/app/publicnon sia una directory o un file valido prima di inserire il comando.


3
Questo è vecchio, ma penso che l'utente abbia chiesto esattamente come fare ciò che descrivi, ma, nel caso in cui / home / user / app / public possa già esistere (che è esattamente l'avvertimento che menzioni alla fine del tuo risposta). Quindi IMHO non risponde alla domanda originale in quanto l'utente voleva sapere esattamente come gestire un target già esistente (ad es. Come sovrascriverlo con il collegamento simbolico, senza doverlo eliminare prima di creare il collegamento simbolico).
jotadepicas,

Provalo -T opzione :)
Milkmannetje il

2

Se capisco correttamente la tua domanda, volevi sapere come affrontare obiettivi già esistenti. In tal caso, ci sono due possibili scenari.

1) l'obiettivo esistente è un file. In questo caso, puoi forzare la creazione del collegamento simbolico con "-f"

2) l'obiettivo esistente è una directory. In questo caso, dipende dalla tua attuale implementazione del comando ln. Si potrebbe avere l'argomento "-n" disponibili, che le cause link simbolico per le directory siano gestiti correttamente, invece di duplicare loro come dici tu.

Riferimento: /unix/207294/create-symlink-overwrite-if-one-exists


Mi chiedo perché la downvote senza un commento: stackoverflow.com/help/privileges/vote-down
jotadepicas
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.