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.