Удаление папки, содержащей символические ссылки

Если я 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 не следует символическим ссылкам