Thank you for reading this post, don't forget to subscribe!
Символическая ссылка, также известная как symlink, представляет собой специальный тип файла, который указывает на другой файл или каталог. Это что-то вроде ярлыка в Windows. Символьная ссылка может указывать на файл или каталог в той же или другой файловой системе или разделе.
В этой статье мы покажем вам , как удалить символические ссылки в системах Linux/UNIX с помощью команд rm, unlink и find.
Прежде чем вы начнете
Чтобы удалить символическую ссылку, вам необходимо иметь права на запись в каталог, содержащий символическую ссылку. В противном случае вы получите ошибку «Operation not permitted».
Когда вы удаляете символическую ссылку, файл, на который она указывает, не затрагивается.
Используйте команду ls -l, чтобы проверить, является ли данный файл символической ссылкой, и найти файл или каталог, на который указывает символическая ссылка.
1 |
ls -l /usr/bin/python |
1 |
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7 |
Первый символ «l» указывает, что файл является символической ссылкой. Символ «->» показывает файл, на который указывает символическая ссылка.
Удалить символические ссылки с помощью команды rm
Команда rm удаляет указанные файлы и каталоги.
Чтобы удалить символическую ссылку, вызовите команду rm с символическим именем ссылки в качестве аргумента:
1 |
rm symlink_name |
В случае успеха команда завершается с нуля и не выводит никаких данных.
С rm его помощью вы можете удалить более одной символической ссылки одновременно. Для этого передайте имена символических ссылок в качестве аргументов через пробел:
1 |
rm symlink1 symlink2 |
Чтобы получить запрос перед удалением символической ссылки, используйте параметр -i:
1 |
rm -i symlink_name |
Для подтверждения нажмите клавишу y и нажмите Enter.
1 |
rm: remove symbolic link 'symlink_name'? |
Если символическая ссылка указывает на каталог, не добавляйте косую черту / в конце. В противном случае вы получите ошибку:
1 |
rm symlink_to_dir/ |
1 |
rm: cannot remove 'symlink_to_dir/': Is a directory |
Если имя аргумента заканчивается на /, команда rm предполагает, что файл является каталогом. Ошибка возникает из-за того, что при использовании без опции -d или -r rm yt удалит каталоги.
Чтобы быть в безопасности, никогда не используйте вариант -r при удалении символических ссылок с командой rm. Например, если вы введете:
1 |
rm -f symlink_to_dir/ |
Содержимое целевого каталога будет удалено.
Удалить символические ссылки с unlink
Команда unlink удаляет данный файл. В отличие от rm, unlink принимает только один аргумент.
Чтобы удалить символическую ссылку, запустите команду unlink с именем символической ссылки в качестве аргумента:
1 |
unlink symlink_name |
Если команда выполняется успешно, она не отобразит вывод.
Не добавляйте косую черту / в конце имени символической ссылки, потому что unlink не может удалить каталоги.
Найти и удалить неработающие символические ссылки
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим (сломанным).
Чтобы найти все неработающие символические ссылки в данном каталоге, выполните следующую команду:
1 |
find /path/to/directory -xtype l |
1 2 |
/path/to/directory/symlink1 /path/to/directory/subdir/symlink2 |
Команда выведет список всех неработающих ссылок в каталоге и его подкаталогах.
Если вы хотите исключить символические ссылки, содержащиеся в подкаталогах, передайте параметр -maxdepth 1 в find:
1 |
find /path/to/directory -maxdepth 1 -xtype l |
1 |
/path/to/directory/symlink1 |
После того, как вы найдете нарушенные символические ссылки, вы можете вручную удалить их с помощью команд rm, unlink или использовать опцию -delete в команде find:
1 |
find /path/to/directory -xtype l -delete |
Заключение
Чтобы удалить символическую ссылку, используйте команду rm или unlink, за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту к имени символической ссылки.