Ordner mit dem Namen ~ wird entfernt


30

Dies ist die Ausgabe von ls -l

ls -l
total 53484
drwxr-xr-x 3 root root     4096 2011-02-10 05:59 ~
-rw-r--r-- 1 root root 54313810 2011-02-13 05:09 jobs.jar
-rw-r--r-- 1 root root   384035 2011-02-15 05:33 jobsLog.out

Ich kann es nicht tun, rm -rf ~ da dadurch mein Ausgangsverzeichnis entfernt wird.

Was sollte ich tun? Es ist kein Problem für mich, aber es tut nur weh.


8
Ich würde es vermeiden, rm -rfauf etwas mit einem solchen Fehlerpotential zu schreiben, wenn Sie falsch tippen. Betrachten Sie die Eingabe Ihres ./~Ordners und das Entfernen seines Inhalts von dort, bevor Sie ein Verzeichnis verschieben und ausführen rmdir ./~, um das ~ -Verzeichnis selbst zu entfernen.
— Adamnfish

Antworten:


58

rm -R ./~

Dadurch wird ~im aktuellen Ordner gesucht.


wow, schau dir die Dinge einfach an! ein dickes Lob!
— theTuxRacer

2
Diese Antwort ist richtig, aber ich denke, Olis Antwort ist besser, weil es sicherer ist. Wenn Sie diesen Befehl leicht falsch eingeben, wird Ihr System permanent in den Papierkorb verschoben.
— HDave

44

Ich habe dumme Fehler gemacht, rmdeshalb hier ein paar Tipps, die ich im Laufe der Jahre gelernt habe, um Ihre Daten vor Unfällen zu schützen:

  1. Verwenden Sie eine grafische Lösung wie Nautilus. Löschen Sie es in den Papierkorb. Wenn Sie dann wissen, dass Sie noch nicht $HOMEin den Papierkorb geworfen haben (alles wäre abgestürzt und sieht unkonventionell aus), leeren Sie Ihren Papierkorb.

  2. Verschieben statt löschen. Benennen Sie das Verzeichnis um mit mvzB:

    mv ./\~ ./a-nice-sensible-directory-name

    Dann löschen Sie es.

  3. Verwenden Sie im Zweifelsfall die -iFlagge, wenn Sie mit potenziellen Fubars arbeiten. Es fordert Sie zu jeder entfernten Datei auf und sollte Sie sehr schnell informieren, wenn etwas Schlimmes passieren wird.

    oli@bert:~/Desktop$ rm -rfi ./del/
    rm: descend into directory `./del'? y
    rm: remove regular file `./del/output2.pdf'?
    

1
kann nicht GUI, es ist ein SSH-Terminal: P Gute Idee über die mv. Ich denke ich sollte den rm alias mit einem machen rm -i.
— theTuxRacer

7
Sie können ssh://user@ip/folderin Nautilus stecken. Funktioniert nicht für alles (zB wenn Sie sudo benötigen), aber los geht's. Aliasing -iist ein zweischneidiges Schwert. Es ist hilfreich, aber auch sehr ärgerlich, wenn Sie viele Dateien bearbeiten. Überlegen Sie -Iauch. Und schauen Sie man rmfür weitere Tipps.
— Oli

+1 für die Umzugsidee. Jetzt frage ich mich, warum es keinen Drop-In-Ersatz für rmdas Verschieben nach (say) ~ / .Trash gibt.
— ShreevatsaR

19

Geniales Problem :)

Sie können das Verzeichnis löschen, indem Sie die Tilde verlassen:

rm -rf \~

Dies funktioniert für alle Arten von Sonderzeichen.



6

Eine weitere, etwas komplexere Methode ist die Verwendung von Inode-Nummern:

$ ls -li
total 24
 7146369 drwxr-xr-x   4 user  staff   136 Jan 19 21:50 ~
$ find . -xdev -inum 7146369 -exec rm -rf {} \;

Vorteile

  • Es funktioniert mit jedem ausgefallenen Namen, den Sie haben können.
  • Sollte sicher sein, da Inode-Nummern eindeutig sind ( -xdev: Verzeichnisse auf anderen Dateisystemen nicht abstammen) und Sie die Suche zuerst testen können, nur für den Fall, dass sie entfernt wird -exec rm -rf {} \;.

Nachteile

  • Das Durchführen find .eines Verzeichnisses mit vielen Dateien und / oder Verzeichnissen nimmt viel Zeit in Anspruch und das Lesen der Festplatte.

Ich war immer an Inodes interessiert und fragte mich, ob es möglich war, dies zu tun =)
— theTuxRacer

Dies funktioniert natürlich nur, wenn Ihr aktuelles Dateisystem das Konzept eines Inodes hat (nicht alle von Ubuntu unterstützten Dateisysteme haben dieses Konzept - obwohl die meisten, die keine nativen Unix-Dateisysteme wie vFat und NTFS sind)
— Billy ONeal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.