ln -s tworzy dowiązanie symboliczne (symlink) — czyli mały plik-wskaźnik, który mówi systemowi „tak naprawdę chodzi o coś innego, w tamtym miejscu”. Zamiast kopiować plik czy katalog, robisz skrót, który prowadzi do oryginału. Dzięki temu trzymasz jedną wersję pliku, a odwołujesz się do niej z wielu miejsc. To jeden z najczęściej używanych trików admina przy konfiguracji, wersjonowaniu aplikacji i porządkowaniu ścieżek.
Składnia i najważniejsze opcje
Podstawowa forma to ln -s CEL NAZWA_LINKU, gdzie CEL to plik lub katalog, na który link ma wskazywać, a NAZWA_LINKU to nazwa tworzonego dowiązania.
-s— tworzy dowiązanie symboliczne zamiast twardego (hard link); to ta flaga robi całą robotę.-f— nadpisuje istniejący już plik o nazwie linku (usuwa go i tworzy nowy).-n— gdy nazwa linku jest symlinkiem do katalogu, traktuje go jak zwykły plik, a nie wchodzi do środka (przydatne z-fprzy podmianie linku do katalogu).-r— tworzy link ze ścieżką względną zamiast bezwzględnej (GNU coreutils, brak w macOS/BSD).-v— wypisuje, co zostało utworzone; dobre do potwierdzenia, że nie strzeliłeś sobie w stopę.-i— pyta o potwierdzenie przed nadpisaniem istniejącego pliku.-T— traktuje NAZWA_LINKU zawsze jako zwykły plik, nigdy jako katalog docelowy (GNU).
Przykłady użycia
ln -s /var/www/app/releases/v2 /var/www/app/current— wskazujecurrentna konkretne wydanie; klasyczny deploy, gdzie podmieniasz tylko link.ln -s ~/Code/projekt/.env.local ~/Code/projekt/.env— podpina plik konfiguracyjny bez kopiowania, więc edytujesz jeden oryginał.ln -sf /opt/node/v20/bin/node /usr/local/bin/node— wymusza podmianę istniejącego linku na nową wersję binarki.ln -sfn /srv/data/2026 /srv/data/aktualny— bezpiecznie przepina link do katalogu na nowy folder (-nzapobiega zagnieżdżeniu).ln -s ../shared/logs logs— tworzy względne dowiązanie do katalogu obok; przeżyje przeniesienie całego drzewa.
Częste błędy i pułapki
Najczęstsza wpadka: zamiana kolejności argumentów. Pamiętaj — najpierw CEL, potem nazwa linku. Druga mina to ścieżki względne: jeśli podasz ln -s ../plik link, to ../plik jest liczone względem położenia linku, nie względem twojego bieżącego katalogu. Gdy oryginał zniknie, zostaje broken symlink — link istnieje, ale prowadzi donikąd (sprawdzisz to ls -l). Uwaga przy podmianie linku do katalogu: samo ln -sf cel link bez -n wsadzi nowy link do środka istniejącego katalogu zamiast go nadpisać — dlatego stosuj -sfn. I jeszcze różnica systemowa: flaga -r (relative) to dodatek GNU coreutils, na macOS i BSD jej nie znajdziesz.
Powiązane komendy: ln (bez -s tworzy hard link), readlink (pokazuje cel symlinku), unlink i rm (usuwanie linków), ls -l (podgląd dowiązań), cp -s oraz stat.