Удаление папки, содержащей символические ссылки - PullRequest
16 голосов
/ 05 июня 2010

Если я rm -rf папка с мягкими ссылками в ней, она попытается перейти по этим ссылкам и удалить соответствующую папку, или просто отсоединит их?

У меня есть копия моего домакаталог с символическими ссылками в нем, и я боюсь rm -rf это в случае, если он идет по этим ссылкам и взрывает соответствующие папки ...

Ответы [ 3 ]

16 голосов
/ 05 июня 2010

Вообще говоря, rm не "удаляет". Это "unlinks". Это означает, что ссылки на файл удаляются rm. Когда число ссылок достигнет нуля, файл больше не будет доступен, и со временем область диска, где он находится, будет использоваться для чего-то еще.

Когда вы rm каталог, вещи внутри каталога не связаны. Символические ссылки - это (вроде как) файлы с именами их целей внутри, поэтому они просто удаляются. На самом деле выяснить, на что они указывают, а затем отсоединить цель - это особая работа, которая не будет выполняться обычным инструментом.

9 голосов
/ 05 июня 2010

Нет. rm -rf не будет переходить по символическим ссылкам - он просто удалит их.

% mkdir a                                                             
% touch a/foo
% mkdir b                                                               
% ln -s a b/a                                                           
% rm -rf b                                                              
%   ls a                                                                  
foo
0 голосов
/ 07 февраля 2014

Вот пример:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...