Potrzebuję dowiązania symbolicznego, które rozpoznaje w stosunku do katalogu, w którym się znajduje. Jakie polecenie służy do stworzenia takiej rzeczy?
linux
command-line
symbolic-link
Jeremiasz Rose
źródło
źródło
ln -s ../some/other/file /some/dir/linkname
ln -s ./file linkname
ponieważ.
odnosi się do bieżącego katalogu.ln -s somedir/original-dir link-name
nie działa. Tworzy katalog o nazwielink-name
zawierającej niepoprawny link. Polecenie, które działa, toln -sr somedir/original-dir link-name
Najnowsze wersje GNU coreutils 'ln (> = 8.16) obsługują opcję
--relative
(lub-r
), co oznacza, że możesz wywoływaćln -s
2 ścieżkami bezwzględnymi lub względnymi (w odniesieniu do katalogu roboczego) i obliczy poprawną ścieżkę względną, która musi być napisane do dowiązania symbolicznego.źródło
-r
opcja jest przydatna, gdy kompilujesz się między sobą i potrzebujesz bezwzględnych ścieżek na hoście kompilacji, ale ścieżek względnych na celu.ln -r -s targetfile myalias
może pomóc to naprawićTo, co musisz zrozumieć, to w zasadzie to, że dowiązanie symboliczne bardziej przypomina plik tekstowy niż pozycję katalogu, która zawiera plik. Więc jeśli ty
to jest całkiem podobne do
System nie dba o to, czy
/file/../poo
w ogóle istnieje, to tylko fragment tekstu, który zostaje umieszczony w dowiązaniu symbolicznym. Kiedy coś próbuje otworzyć dowiązanie symboliczne, wtedy system próbuje to rozwiązać.Jeśli używasz powłoki z uzupełnianiem nazw plików, ta funkcja może wprowadzać w błąd, umożliwiając uzupełnienie nazwy pliku względem bieżącego katalogu roboczego, nawet jeśli ostatecznie użyjesz go jako celu dowiązania symbolicznego w zupełnie innym katalogu.
źródło
<
zmiany jak system przydzielona pamięć. Oczywiście<
w tym katalogu nie ma nazwy pliku , jest to po prostu tani sposób na stworzenie bardzo małej, podobnej do pliku rzeczy, która ma pewne atrakcyjne właściwości w stosunku do zwykłego pliku tekstowego na tej konkretnej platformie.Względne linki były dla mnie trudne w OS X, tj
oba nie działały (coś zostało utworzone, ale to nie był katalog). Utworzyłem pożądany link za pomocą ścieżek bezwzględnych .
źródło
ln -s Dropbox/git/codyhess/bin ~/bin
Chciałem tylko wyjaśnić, jak utworzyć dowiązanie symboliczne przy użyciu ścieżek względnych (ze szczegółowym przykładem).
Jak wspomniano w komentarzach Ignacio Vazquez-Abrams, musisz określić lokalizację pliku / folderu w odniesieniu do miejsca, w którym zostanie utworzone dowiązanie symboliczne, a nie w stosunku do bieżącego katalogu.
PRZYKŁAD
Jesteś w
/usr/share/nginx/html/_src/learn
Utworzysz dowiązanie symbolicznecoding
w/usr/share/nginx/html
Utwórz względne dowiązanie symboliczne (teorię):
Utwórz rzeczywiste względne dowiązanie symboliczne:
Więcej informacji (ten sam przykład)
źródło