dowiązanie symboliczne do już istniejącego katalogu

12

Czy istnieje właściwy sposób odwołują /home/user/app/publicsię /home/user/public_html, biorąc pod uwagę fakt, że cel już istnieje?

Jeśli to zrobię ln -s /home/user/app/public /home/user/public_html, skończę /home/user/public_html/public.

Wydaje mi się, że byłoby możliwe odwrócenie takiej akcji, jak ln -s /home/user/public_html /home/user/app/public, ale nie jestem pewien, jak tego uniknąć /home/user/app/public/public_htmlw wyniku końcowym.

użytkownik2094178
źródło

Odpowiedzi:

13

Pozwól mi zrozumieć twój problem we właściwy sposób

Twoje źródło jest /home/user/public_htmli zakładam, że ma tam pliki. I chcesz zrobić link do tego katalogu od razu /home/user/app/public. W ten sposób możesz zrobić coś takiego ls /home/user/app/publici zobaczyć, jakie pliki na nim istnieją /home/user/public_html.

Jeśli jest to poprawne, to twoje źródło jest, /home/user/public_htmla celem jest /home/user/app/public. Prawidłowe polecenie to:

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

Upewnij się tylko, że /home/user/app/publicpoprzedni katalog lub plik nie jest prawidłowy. Wpisz polecenie.

Lucio
źródło
3
To jest stary, ale myślę, że użytkownik zapytał dokładnie, jak zrobić to, co opisujesz, ale w przypadku, gdy / home / user / app / public może już istnieć (jest to dokładnie zastrzeżenie, o którym wspomniałeś na końcu odpowiedź). Więc IMHO nie odpowiada na pierwotne pytanie, ponieważ użytkownik chciał dokładnie wiedzieć, jak postępować z już istniejącym celem (tj. Jak zastąpić go dowiązaniem symbolicznym, bez konieczności usuwania go przed utworzeniem dowiązania symbolicznego).
jotadepicas
Wypróbuj -T opcja :)
Milkmannetje
2

Jeśli dobrze rozumiem twoje pytanie, chciałeś wiedzieć, jak radzić sobie z już istniejącymi celami. W takim przypadku istnieją dwa możliwe scenariusze.

1) istniejącym celem jest plik. W takim przypadku możesz wymusić utworzenie dowiązania symbolicznego za pomocą „-f”

2) istniejącym celem jest katalog. W takim przypadku zależy to od bieżącej implementacji polecenia ln. To mogłoby mieć „-n” argumentu dostępne, co powoduje linku do katalogów być prawidłowo obsługiwane, zamiast powielać je jak mówisz.

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

jotadepicas
źródło
Zastanawiam się, dlaczego głosowanie bez komentarza: stackoverflow.com/help/privileges/vote-down
jotadepicas