Dowiązania symboliczne to zapisane skróty do ścieżek względnych:
~/foo➤ ln -s . ~/bar/foo
~/foo➤ ls -l ~/bar
total 8
lrwxr-xr-x 1 me me 1B 15 May 14:38 foo -> .
Plik ~/bar/foo
jest dowiązaniem symbolicznym do bar
bieżącego katalogu, tj. Do samego siebie
Co jeśli chcę utworzyć dowiązanie symboliczne w innym katalogu do katalogu, w którym jestem w tym czasie? Tak więc w powyższym przykładzie jestem ~/foo
i chcę utworzyć ~/bar/foo
jako dowiązanie symboliczne do ~/foo
. Oczywiście mój bieżący katalog może być nieco dłuższy niż 5 znaków i może nie być tak łatwy do wpisania.
bash
symbolic-link
ln
Gareth
źródło
źródło
$
zmienne i podstawienia poleceń, w przeciwnym razie nazwy plików ze spacjami spowalniają przebieg. Nie potrzebujesz również zakończenia$(basename $PWD)
(i zapomniałeś$
(i cytujesz :-))), ponieważ i tak jest to domyślna nazwa linku.pwd
podejście i coś poszło nie tak. Spójrzmy na błąd ID-ten-TAbsolutnie:
(może być dobre dla ogólności w skryptach) lub po prostu
Stosunkowo:
Uzupełnianie tabulatorów pomoże Ci pisać.
Z komentarza grawity i http://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html :
Więc w tej wersji:
powinien działać (w praktyce jest identyczny z twoim pierwszym przykładem, z dodatkiem
--relative
przełącznika).źródło
ln -s -r foo ~/bar
.$(readlink -f .)
nad$PWD
?readlink -f
będzie wtedy dowiązanie symboliczne do bezwzględnej ścieżki docelowej bieżącego katalogu, podczas gdy$PWD
będzie dowiązanie symboliczne do dosłownego katalogu, w którym aktualnie się znajduje. To, czego chce, prawdopodobnie od czasu do czasu jest inne, a przede wszystkim prawdopodobnie nie stanowi problemu.