[РЕШЕНО] Символическая ссылка
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
[РЕШЕНО] Символическая ссылка
Доброго времени суток!
Допустим, существует некий каталог, на который существует некая символическая ссылка (а может и нет её или их, наоборот, несколько).
Можно ли найти все символические ссылки, указывающие на этот каталог? Было бы вообще чудесно, если бы можно было регенерировать их всех.
Для чего нужно: допустим существует диск, в котором есть некие каталоги, на которые указывают символические ссылки, размещённые на другом диске. Если эти диски перемонтировать к другим каталогам, то ссылки станут битыми. Можно было бы ссылки поправить и вручную, но как их найти?
Допустим, существует некий каталог, на который существует некая символическая ссылка (а может и нет её или их, наоборот, несколько).
Можно ли найти все символические ссылки, указывающие на этот каталог? Было бы вообще чудесно, если бы можно было регенерировать их всех.
Для чего нужно: допустим существует диск, в котором есть некие каталоги, на которые указывают символические ссылки, размещённые на другом диске. Если эти диски перемонтировать к другим каталогам, то ссылки станут битыми. Можно было бы ссылки поправить и вручную, но как их найти?
Последний раз редактировалось devilr 25.05.2021 08:43, всего редактировалось 1 раз.
-
- Сообщения: 1369
- ОС: Mageia 5.1 & 8 x86_64, KDE
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: Символическая ссылка
Ладно. Можно по другому.
1) Создаём файл
2) Делаем символическую ссылку на него
3) Проверяем, что ссылка создалась и указывает туда, куда требовалось. Например с помощью ls.
4) Удаляем файл.
5) Опять проверяем. Видим, что ссылка "битая" но указывает туда же, куда и указывала. Даже название файла помнит правильное.
Спрашивается, где система это помнит/хранит? А, если помнит, то можно и найти, наверное.
-
- Модератор
- Сообщения: 20567
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Символическая ссылка
В символьной ссылке.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 1369
- ОС: Mageia 5.1 & 8 x86_64, KDE
Re: Символическая ссылка
Поиск симлинков в текущей директории (рекурсивно):
Просмотр, куда ведет симлинк:
зы: это я нашёл в Яндексе http://barbitoff.blogspot.com/2018/04/linux.html
спасибо за тему, надо будет найти время и обновить статью в вики
Shell
find . -type l
Shell
readlink /path/to/my/symlink
спасибо за тему, надо будет найти время и обновить статью в вики
Спасибо сказали:
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: Символическая ссылка
Понятно. Спасибо.
Хотя, странно, что нет штатного способа поиска подобных "битых" ссылок. Не, велосипед то написать несложно, но почему нет? Символические ссылки существуют уже 100500 лет, неужели никто на подобные грабли не наступал?
Хотя, странно, что нет штатного способа поиска подобных "битых" ссылок. Не, велосипед то написать несложно, но почему нет? Символические ссылки существуют уже 100500 лет, неужели никто на подобные грабли не наступал?
-
- Модератор
- Сообщения: 20567
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Символическая ссылка
Потому что эти грабли проще обойти, не создавая ссылок на то, что может исчезнуть.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 1369
- ОС: Mageia 5.1 & 8 x86_64, KDE
Re: Символическая ссылка
О том история умалчивает, но если напишите "опус", то будьте так любезны выложить его сюда, вдруг пригодится, а заодно я его в нашу вики перепишу (Вы не против?)
Добавлено (00:20):
Эка Вы батенька хватили — "знал бы прикуп, жил бы в Сочи"Bizdelnick писал: ↑25.05.2021 00:18Потому что эти грабли проще обойти, не создавая ссылок на то, что может исчезнуть.

Добавлено (00:23):
Чтобы найти все символические ссылки, например на /etc/sysctl.conf, используйте следующую команду:# find /путь_к_директории_начала_поиска -lname /путь_к_файлу
# find / -lname /etc/sysctl.conf
В данном примере, ‘/путь_к_файлу‘ это символическая ссылка, содержащая совпадения shell шаблона.
зы: нашёл здесь https://hamsterden.ru/symlinks/#poisk
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: Символическая ссылка
Вы живёте в каком то другом мире, да?Bizdelnick писал: ↑25.05.2021 00:18Потому что эти грабли проще обойти, не создавая ссылок на то, что может исчезнуть.

А потом уже я хочу навести порядок и перемещаю саму папку "Фильмы" в какой нибудь каталог (или вообще на новый диск, который я купил специально для фильмов)... и в результате получаю "втык" от жены, потому как она уже не может досмотреть сериал.
И не думаю, что я один такой.
Ну, тут много любителей писать скрипты, может кто и раньше напишет.

Добавлено (00:32):
Там проблема не столько в том, как найти "битые" ссылки, но и в том, чтобы отличить их от нормальных. Явно "опус" надо будет писать.

-
- Модератор
- Сообщения: 20567
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Символическая ссылка
Я живу в мире, где мне всего один раз пришлось автоматически править кучу симлинков, причём ситуация была довольно специфическая, так что написанный мной для этого велосипед (от силы десяток строк на perl) вряд ли кому-то когда-то мог бы пригодиться. Не думаю, что я какой-то особенный.
Ну сделайте на старом месте симлинк в новое, делов-то.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: Символическая ссылка
Я вашему миру завидую.

И я искренне рад, что вы на подобные грабли ещё не наступали.
-
- Модератор
- Сообщения: 20567
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Символическая ссылка
Значит, Вы что-то делаете не так. Злоупотребляете и симлинками, и переименованиями, не задумываясь о последствиях. А мир не виноват.
Не может быть такого инструмента by design. Может быть только костыль. Они и есть (symlinks, fslint, rmlint…), но поскольку это костыли, ничего подобного нет и не будет в стандартном наборе инструментов.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 892
- ОС: debian, fedora (i3-wm)
Re: Символическая ссылка
По моему битая ссылка находится так:
Код: Выделить всё
find -xtype l
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: Символическая ссылка
Спасибо.
Всё работает. Обошлись без костылей.
Всё работает. Обошлись без костылей.

-
- Сообщения: 892
- ОС: debian, fedora (i3-wm)
Re: [РЕШЕНО] Символическая ссылка
Проверила свой хомяк и обнаружила несколько ссылок из рантайма google-chrome. Это нормально.
Чтобы пройтись по системе, пришлось исключить /var /usr и примонтированные разделы в которые попадают /dev /sys /mnt /proc /run /tmp
Наверное легче было бы указать разделы для поиска 
Чтобы пройтись по системе, пришлось исключить /var /usr и примонтированные разделы в которые попадают /dev /sys /mnt /proc /run /tmp
Код: Выделить всё
sudo find -xdev -xtype l -not -path "./var/*" -a -not -path "./usr/*"

Последний раз редактировалось olecya 25.05.2021 09:30, всего редактировалось 1 раз.
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: [РЕШЕНО] Символическая ссылка
Ну вот и приложение сим действиям нашлось. Теперь мир точно не виноват. 
P.S. Понятно, что битые ссылки особо не мешают и ничего не рушат.

P.S. Понятно, что битые ссылки особо не мешают и ничего не рушат.
-
- Сообщения: 1139
- ОС: Fedora
Re: [РЕШЕНО] Символическая ссылка
В моём дистрибутиве есть утилита symlinks. Несколько дурная, и даже не несколько, но свои функции выполняет
-
- Сообщения: 892
- ОС: debian, fedora (i3-wm)
Re: [РЕШЕНО] Символическая ссылка
s.xbatob, Спасибо
Код: Выделить всё
symlinks -r . | grep '^dangling:'
Спасибо сказали:
-
- Сообщения: 3637
- ОС: Mandriva => Gentoo (~amd64)
Re: [РЕШЕНО] Символическая ссылка
Не только в вашем. Пакет называется app-misc/symlinks-1.4-r3