Antworten:
Beide sind ein Wrapper für dieselbe grundlegende Funktion, die ein unlink()
Systemaufruf ist.
Um die Unterschiede zwischen den Userland-Anwendungen abzuwägen.
rm(1)
:
unlink(1)
:
rm(1)
mehreren Argumenten.Sie können den Unterschied demonstrieren mit:
$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'
$ touch $(seq 1 100)
$ time rm $(seq 1 100)
real 0m0.048s
user 0m0.004s
sys 0m0.008s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done
real 0m0.207s
user 0m0.044s
sys 0m0.112s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done
real 0m0.167s
user 0m0.048s
sys 0m0.120s
Wenn es sich jedoch um einen unverfälschten Aufruf der Systemfunktion handelt unlink(2)
, ist dies wahrscheinlich nicht das, wofür Sie verantwortlich sind.
Sie können ein System unlink()
für Verzeichnisse und Dateien gleichermaßen ausführen . Wenn das Verzeichnis jedoch ein übergeordnetes Element für andere Verzeichnisse und Dateien ist, wird die Verknüpfung zu diesem übergeordneten Element entfernt, die untergeordneten Elemente bleiben jedoch hängen. Welches ist weniger als ideal.
Bearbeiten:
Entschuldigung, den Unterschied zwischen unlink(1)
und geklärt unlink(2)
. Die Semantik wird sich weiterhin zwischen den Plattformen unterscheiden.
mkdir -p 1/2/3; touch 1/one 1/2/two 1/2/3/three; rm -ri 1
. Wenn Sie die Verknüpfung zum übergeordneten Verzeichnis aufheben, sollte der von den untergeordneten Verzeichnissen belegte Speicherplatz verloren gehen, bis fsck die Diskrepanz feststellt.
Auf der POSIX-Spezifikationsebene wird das, was rm tut, viel genauer spezifiziert als das, was die Verknüpfung aufhebt .
Die Portabilität des Ergebnisses scheint bei Verwendung von rm besser zu sein, wenn Ihr Skript auf mehreren Betriebssystemen ausgeführt werden muss.
Der langsame Teil des Entfernens ist der Dateisystemcode und das Festplattenmaterial, nicht die Vorbereitung des Unlink () - Systemaufrufs auf den Benutzerbereich.
Dh wenn der Geschwindigkeitsunterschied wichtig ist, sollten Sie die Daten nicht im Dateisystem speichern.
Unlink ist nur ein "Licht". rm hat mehr Funktionen, aber sie machen dasselbe.