Примеры
Порядок аргументов как у
cp: сначала цель, потом имя ссылки (ln -s target name).
Симлинки (ln -s) и жёсткие ссылки: чем отличаются, когда что, типичные ошибки с относительными путями.
ln -s /opt/app/current/bin/app /usr/local/bin/app
симлинк (порядок как у cp)
ln -sf /new/target link
пересоздать
readlink -f link
реальный путь
ln file hardname
жёсткая ссылка
find . -xtype l
найти битые симлинки
Ссылка — это второе имя для файла. Два вида:
ln -s) — указатель на путь. Может вести на каталог,
на другую ФС, может «висеть» (битая, если цель удалили). Это самый частый случай.-s — единственный ключ, который отличает симлинк от жёсткой ссылки; без него
ln создаёт жёсткую. -f перезаписывает существующее имя ссылки — без
подтверждения, поэтому опасно с чужими или важными файлами. -n нужен именно
при замене симлинка, указывающего на каталог: без него ln -sf цель dir
положит новую ссылку внутрь dir, а не заменит сам dir.
| Ключ | Что делает | Пример |
|---|---|---|
-s --symbolic |
Создать символическую ссылку вместо жёсткой. | ln -s target link |
-f --force |
Удалить существующий файл назначения и создать ссылку заново. опасно | ln -sf target link |
-n --no-dereference |
При замене symlink на каталог — не заходить внутрь, заменить сам симлинк. | ln -sfn target linkdir |
-v --verbose |
Печатать каждую созданную ссылку. | ln -sv target link |
-r --relative |
Создать символическую ссылку с относительным путём до цели. | ln -sr target link |
-T --no-target-directory |
Считать ИМЯ обычным файлом назначения, даже если это каталог. | ln -sT target name |
Ничего не найдено. Попробуй запрос короче.
Порядок аргументов как у
cp: сначала цель, потом имя ссылки (ln -s target name).
Симлинк (-s) |
Жёсткая ссылка | |
|---|---|---|
| На каталог | да | нет |
| Между ФС | да | нет |
| Если удалить цель | «битый» симлинк | данные живы, пока есть имена |
Видно в ls -l |
-> target |
как обычный файл |
| Свой inode | да (отдельный) | нет (тот же, что у файла) |
Для конфигов, версий приложений, /etc/...wants/ у systemd — почти всегда симлинки.
Цель переместили/удалили. ls -l покажет красным, readlink -f — пусто/ошибка.
Найти все битые: find /path -xtype l.
Относительный путь считается от каталога ссылки, не от текущего. Если двигаешь ссылку — пересчитай цель или используй абсолютный путь.
ln -s в существующий каталог создал ссылку ВНУТРИ негоЕсли ИМЯ — существующий каталог, ln -s цель dir положит ссылку в dir/цель.
Чтобы заменить сам симлинк-каталог — добавь -n (ln -sfn цель dir).
Есть неточность? Сообщить об ошибке в статье