ln -s

Tworzy dowiązanie symboliczne wskazujące na plik lub katalog.

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 -f przy 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 — wskazuje current na 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 (-n zapobiega 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.