Връзката в 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.