Próbuję utworzyć symboliczne łącze w moim katalogu domowym, które wskazuje na katalog na zewnętrznym dysku twardym.
Działa dobrze, gdy określę to w następujący sposób:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
Jednak, gdy próbuję, tworzy to wadliwy link:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
To tworzy link, do którego nie mogę się dostać cd
.
Kiedy próbuję, bash narzeka:
bash: cd: Data: Too many levels of symbolic links
Łącze symboliczne Data w moim domu ma również kolor czerwony, gdy ls
jest ustawiony na wyświetlanie kolorowych wyników.
Dlaczego to się dzieje? Jak mogę utworzyć link w ten sposób? (Chcę utworzyć dowiązanie symboliczne do katalogu w moim katalogu roboczym w innym katalogu).
Edycja: zgodnie z tą odpowiedzią StackOverflow, jeśli drugi argument (w moim przypadku byłby to ~ / Data) już istnieje i jest katalogiem,
ln
utworzy dowiązanie symboliczne do celu w tym katalogu.
Jednak mam ten sam problem z:
ln -s Data/ ~/
cd ~
zwykle jest taka sama jakcd
.ls -l ~/Data
pomógłby Ci zobaczyć, co było nie tak z linkiem „czerwony”.cat
, ale zapomniałem co było wynikiem ... (nie jestem w domu na nich chwila.)/run/media/name/exhdd/Data/
, abyData
następnie użyć następującegoln -s /run/media/name/exhdd/Data/* Data
Odpowiedzi:
Oto co się dzieje. Jeśli utworzysz dowiązanie symboliczne ze ścieżką względną, dowiązanie symboliczne będzie względne. Dowiązania symboliczne przechowują ścieżki, które im podajesz. Nigdy nie rozwiązują ścieżek do pełnych ścieżek. Bieganie
tworzy dowiązania o nazwie
ls2
w/usr/bin
celuls
(viz./usr/bin/ls
) w stosunku do katalogu dowiązanie jest w (/usr/bin
). Powyższe polecenie utworzy funkcjonalne dowiązanie symboliczne z dowolnego katalogu.Jeśli przeniesiesz dowiązanie symboliczne do innego katalogu, przestanie on wskazywać na plik w
/usr/bin/ls
.Tworzysz dowiązanie symboliczne, które wskazuje
Data
i nazywasz jeData
. Wskazuje na siebie. Musisz utworzyć dowiązanie symboliczne z bezwzględną ścieżką do katalogu.źródło
Miałem ten sam problem. Google doprowadziło do tej odpowiedzi, ale najprostsze rozwiązanie nie jest tutaj udokumentowane:
-T załatwia sprawę
człowiek ln:
Dodam to tutaj, aby każdy z tym samym pytaniem mógł to znaleźć :)
źródło
ln
zachowanie względem ścieżek względnych jest nieintuicyjne. Aby przywrócić zdrowie psychiczne, użyj-r
flagi.Wyjaśnienie:
Oznacza to, że
ln
zrobi to, czego oczekujesz. Weźmie pod uwagę katalog, w którym się znajdujesz, katalog, w którym znajduje się cel, i konstruujemy ścieżkę względem katalogu, w którym znajduje się link. Domyślnym zachowaniem (bez-r
) jest interpretacja pierwszego parametru (celu) dosłownie , w w takim przypadku musisz samodzielnie zbudować ścieżkę, aby była poprawna w katalogu łącza.Alternatywnie użyj ścieżki bezwzględnej, jak wspomniano w @SmithJohn
lub
źródło
Bardzo prosto możesz utworzyć link do folderu. Spójrz na moje polecenie
ln -s / home / targetatedfolder / var / www / html / link_name
źródło