Посиланням у Linux називають спеціальний файл, який відсилає до іншого файлу або директорії. Так один файл може розміщуватися відразу ж у кількох місцях одночасно. При видаленні оригіналу посилання на нього зберігається. У результаті можуть виникати збої та загалом засмічуватися система.
Для початку пояснимо спосіб перевірки, що файл насправді є посиланням. Це зручно робити за допомогою утиліти ls
. Після розглянемо три способи видалення, кожен з яких має свої особливості.
За допомогою ls
зручно дивитися інформацію про файл. Для використання утиліти задайте їй опцію -l
і вкажіть шлях. Як приклад візьмемо файл ~/symlinks/link_1
:
$ ls -l ~/symlinks/link_1
Ви можете перевірити цілий каталог на наявність посилань:
$ ls -l ~/symlin
Файл, який не потрібен, позначений характерною стрілочкою після його назви.
За допомогою команди rm
можна видаляти будь-які файли у файловій системі Linux, зокрема й посилання. Тобто, вона підходить для нашого завдання. Тут важливо згадати, що в результаті видалення посилання оригінального файлу або директорії не торкнуться.
У терміналі виконайте команду:
$ rm ~/symlinks/link_1
Також щоб отримати детальну інформацію про процедуру, додайте команді опцію -v
:
$ rm -v ~/symlinks/link_1
Додатково можна перевірити, чи зникло посилання з директорії. Для цього використовуйте описану раніше команду ls
.
Тепер ви знаєте як видалити символічне посилання Linux.
Утиліта unlink
призначається для видалення файлів із файлової системи Linux. Їй достатньо вказати шлях до посилання:
$ unlink ~/symlinks/link_1
У рамках поставленого завдання rm і unlink працюють практично однаково. А тепер перейдемо до останнього способу.
За допомогою команди find
можна шукати і видаляти посилання в заданій директорії. А отже, не потрібне додаткове використання ls
.
На відміну від двох попередніх варіантів, у неї досить просунуті можливості, наприклад, встановлення критеріїв пошуку. Але й синтаксис із цієї причини не такий простий.
Для пошуку потрібно вказати каталог і кілька параметрів:
$ find ~/symlinks/ -type l -print
Параметр -type l
потрібен для відбору тільки символічних посилань, -print
для виведення повного імені. А за допомогою -maxdepth
можна задати глибину пошуку за вкладеними каталогами. Якщо вказати 1, то пошук буде йти тільки по самому каталогу, без вкладень:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Щойно посилань у директорії буде багато, ви можете задати шаблон пошуку для команди find
. Як приклад візьмемо ситуацію, коли потрібно відшукати тільки приховані посилання з датою останньої зміни не більше 30 днів тому:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Було додано два критерії:
-name
- пошук за іменем.-mtime
- за часом модифікації.За заданим шаблоном усі знайдені посилання можна видалити. Для цього -print
замінюється на -delete
:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
Наприкінці інструкції розберемося з пошуком і видаленням битих посилань, які нікуди не ведуть, наприклад, після видалення оригінального файлу або директорії. Для такої мети підійде параметр -xtype l
. При цьому -print
для виведення не потрібен:
$ find ~/broken_links/ -xtype l
У результаті всі биті посилання відобразяться в терміналі. Для їх видалення в кінці команди додайте -delete
:
$ find ~/broken_links/ -xtype l -delete
На цьому інструкцію з видалення посилання в Linux завершено.