Введение
Символическая ссылка, также известная как символическая ссылка, представляет собой файл особого типа, указывающий на другой файл или каталог. Это что-то вроде ярлыка в Windows. Символическая ссылка может указывать на файл или каталог в той же или другой файловой системе или разделе.
В этом руководстве мы покажем вам, как удалять и удалять символические ссылки в системах Linux/UNIX с помощью команд rm
, unlink
и find
.
До начала
Чтобы удалить символическую ссылку, у вас должны быть права на запись в каталоге, содержащем символическую ссылку. В противном случае будет отображаться ошибка «Операция не разрешена».
Когда вы удаляете символическую ссылку, файл, на который она указывает, не затрагивается.
Используйте команду ls -l
, чтобы проверить, является ли конкретный файл символической ссылкой, и найти файл или каталог, на который указывает символическая ссылка.
ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
Первый символ « l » означает, что файл является символической ссылкой. Символ " -> " показывает файл, на который указывает символическая ссылка.
Удалить символические ссылки с помощью rm
Команда rm
удаляет определенные файлы и каталоги.
Чтобы удалить символическую ссылку с помощью команды rm
, вызовите команду, за которой следует имя символической ссылки в качестве аргумента:
rm symlink_name
В случае успеха команда заканчивается нулем и не показывает никаких результатов.
С помощью rm
вы можете удалить более одной символической ссылки одновременно. Для этого напишите имена симлинков в качестве аргументов, разделенных пробелами:
rm symlink1 symlink2
Чтобы получить запрос подтверждения перед удалением символической ссылки, используйте параметр -i
:
rm -i symlink_name
Для подтверждения введите y
и нажмите Enter
.
rm: remove symbolic link 'symlink_name'?
Если символическая ссылка указывает на каталог, не добавляйте косую черту /
в конец. В противном случае вы получите ошибку:
rm symlink_to_dir/
rm: cannot remove 'symlink_to_dir/': Is a directory
Если имя аргумента заканчивается на /
, команда rm
предполагает, что файл является каталогом. Ошибка возникает из-за того, что при использовании без опции -d
или -r
rm
не может удалять каталоги.
В целях безопасности никогда не используйте параметр -r
при удалении символических ссылок rm
. Например, если вы наберете:
rm -r symlink_to_dir/
Содержимое целевого каталога будет удалено.
Удалить символические ссылки с помощью unlink
Команда unlink
удаляет определенный файл. В отличие от rm
, unlink
принимает только один аргумент.
Чтобы удалить символическую ссылку, запустите команду unlink
, за которой следует имя символической ссылки в качестве аргумента:
unlink symlink_name
Если команда выполнена успешно, вывод не отображается.
Не добавляйте косую черту /
в конце имени символической ссылки, потому что unlink
не может удалить каталоги.
Найти и удалить неработающие символические ссылки
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим — сломанным.
Чтобы найти все неработающие символические ссылки в данном каталоге, выполните следующую команду:
find /path/to/directory -xtype l
/path/to/directory/symlink1
/path/to/directory/subdir/symlink2
Команда выведет список всех неработающих ссылок в каталоге и его подкаталогах.
Если вы хотите исключить символические ссылки, содержащиеся в подкаталогах, используйте параметр -maxdepth 1
с find
:
find /path/to/directory -maxdepth 1 -xtype l
/path/to/directory/symlink1
Как только вы найдете неработающие символические ссылки, вы можете вручную удалить их с помощью rm
или unlink
или использовать параметр -delete
команды find
:
find /path/to/directory -xtype l -delete
Вывод
Чтобы удалить символическую ссылку, используйте команду rm
или unlink
, за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту в конце имени символической ссылки.