2010-06-04 19 views
14

Wenn ich einen Ordner mit Softlinks in diesem Ordner habe, versucht er, diesen Links zu folgen und den entsprechenden Ordner zu löschen, oder hebt er einfach auf?Löschen eines Ordners, der symbolische Verknüpfungen enthält

Ich habe eine Kopie von meinem Home-Verzeichnis mit symbolischen Links drin, und ich bin zu rm -rf es bei Angst, es diese Links folgt und bläst die entsprechenden Ordner auf ...

Antwort

7

Nr rm -rf folgt nicht symbolischen Links - es wird sie einfach entfernen.

% mkdir a                
% touch a/foo 
% mkdir b                
% ln -s a b/a               
% rm -rf b                
% ls a                 
foo 
14

Im Allgemeinen wird rm nicht "gelöscht". Es "trennt". Dies bedeutet, dass Verweise auf eine Datei durch rm entfernt werden. Wenn die Anzahl der Referenzen Null erreicht, ist die Datei nicht mehr zugänglich und mit der Zeit wird der Bereich der Festplatte, auf dem sie sich befindet, für etwas anderes verwendet.

Wenn Sie rm ein Verzeichnis, die Sachen innerhalb des Verzeichnisses ist nicht verknüpft. Symbolische Links sind (ähnlich wie) Dateien mit dem Namen ihrer Ziele in ihnen und so sind sie nur entfernt. Um herauszufinden, worauf sie zeigen und dann das Ziel aufheben, handelt es sich um eine spezielle Arbeit, die nicht von einem generischen Tool ausgeführt wird.

0

Hier ist 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 

gibt

find a b 

a 
a/1 
a/2 

.

rm -rf b/ 

gibt Fehler:

rm: cannot remove `b/': Not a directory 

Fazit:

rm folgt nicht Symlinks

Verwandte Themen