Удаление папки, содержащей символические ссылки
Если я rm -rf
папка со скрытыми ссылками в ней, попытается ли она следовать этим ссылкам и удалит соответствующую папку, или она просто отключит их?
У меня есть копия моей домашней директории с символическими ссылками в ней, и я боюсь ее rm -rf
, если она следит за этими ссылками и взрывает соответствующие папки...
Ответы
Ответ 1
Вообще говоря, rm
не "удаляет". Это "непривязано". Это означает, что ссылки на файл удаляются с помощью rm
. Когда количество ссылок достигает нуля, файл больше не будет доступен, и со временем область диска, на которой он находится, будет использоваться для чего-то еще.
Когда вы rm
каталог, содержимое внутри каталога не подключено. Символические ссылки (вроде как) с именами их целей внутри них, и поэтому они просто удаляются. Чтобы на самом деле выяснить, на что они указывают, а затем отсоединить цель, это специальная работа, и это не будет сделано с помощью общего инструмента.
Ответ 2
Нет. rm -rf не будет следовать символическим ссылкам - он просто удалит их.
% mkdir a
% touch a/foo
% mkdir b
% ln -s a b/a
% rm -rf b
% ls a
foo
Ответ 3
Вот axample:
find a b
a
a/1
a/2
b
ll
drwxr-xr-x 2 ****** ****** 4.0K Feb 6 15:11 a
lrwxrwxrwx 1 ****** ****** 1 Feb 6 15:13 b -> a
.
rm -rf b
дает
find a b
a
a/1
a/2
.
rm -rf b/
дает ошибку:
rm: cannot remove `b/': Not a directory
Вывод:
rm не следует символическим ссылкам