Как удалить (удалить) символические ссылки в Linux

Символическая ссылка, также известная как символическая ссылка, представляет собой файл особого типа, который указывает на другой файл или каталог. Это что-то вроде ярлыка в 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 -f symlink_to_dir/

Содержимое целевого каталога будет удалено.

Удалить символические ссылки с помощью unlink

Команда unlink удаляет указанный файл. В отличие от rm , unlink принимает только один аргумент.

Чтобы удалить символическую ссылку, запустите команду unlink за которой следует имя символической ссылки в качестве аргумента:

unlink symlink_name

Если команда выполняется успешно, она не выводит никаких результатов.

Не добавляйте к / слэш в конце имени SYMLINK потому 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 за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту в конце имени символической ссылки.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий

Ваш адрес email не будет опубликован.