command line

Inhalt des Home-Ordners verloren:falsche Verwendung von rm

Ich benutze Ubuntu-Mate 20.04 und ich habe den größten Teil des Inhalts meines Home-Ordners verloren.Ich denke,es könnte daran liegen,dass ich den Befehl "rm" mit sudo falsch verwendet habe,aber ich bin mir nicht sicher,ob es etwas anderes sein könnte.

Ich erkläre:Ich habe versucht,einen Ordner ("targetfolder (something)")und dessen Inhalt unter /home/user2 zu löschen,während ich als user1 angemeldet war (user1 hat sudo-Rechte).Also habe ich das getan:

sudo rm -r /home/user2/targetfolder (something)/ 

Zuerst gab rm einige Fehlermeldungen wegen der Klammern aus-ich meine dies:()-,also ersetzte ich einen Teil des Ordnernamens durch *,und fertig:

sudo rm -r /home/user2/targetfolder */

HINWEIS:Ich habe vielleicht Anführungszeichen für den Namen des Ordners wegen der Leerzeichen verwendet ('targetfolder *' ),obwohl der letzte im Terminal registrierte Befehl ohne Anführungszeichen auskommt.

So wie ich es verstehe,sollte rm nur alle Ordner mit einem Namen,der mit "targetfolder" beginnt,innerhalb des Home-Ordners von user2 gelöscht haben,aber es scheint den größten Teil des Home-Ordners von user1 gelöscht zu haben.Ich füge hinzu,dass ich,da ich mir nicht sicher war,ob rm funktioniert oder nicht,das Terminal geschlossen habe,was den Prozess wohl beendet hat.

Nur für den Fall,dass es relevant ist:Sowohl der private Ordner von user1 als auch der von user2 sind mit ecryptfs verschlüsselt (der zu löschende Ordner unter /home/user2 war außerhalb von .Private und daher unverschlüsselt).

Meine Frage ist also,ob der rm-Befehl,wie ich ihn verwendet habe,den Inhalt des Home-Ordners von user1 gelöscht (oder sogar das System beeinträchtigt)haben könnte.

Ich habe eine aktuelle Sicherungskopie des verlorenen Inhalts,aber ich wollte sichergehen,dass dies nicht auf ein anderes Problem als den Befehl rm zurückzuführen ist.

Vielen Dank im Voraus und Entschuldigung für mein Englisch.

This command

sudo rm -r /home/user2/targetfolder */

würde versuchen, einen Ordner /home/user2/targetfolder zu löschen , der wahrscheinlich nicht existierte, und dann Elemente, die mit */ übereinstimmen . Das würde bedeuten, dass alle nicht versteckten Verzeichnisse (und deren Inhalte) im aktuellen Arbeitsverzeichnis vorhanden sind. Wenn das aktuelle Arbeitsverzeichnis das Home-Verzeichnis von user1 ist, dann ja, das wäre betroffen.

Der Fehler besteht nicht darin, dem Raum zu entkommen. Ein Leerzeichen ist ein Trennzeichen, das Argumente trennt. Hier geben Sie zwei Argumente (neben der Option -r ) an, /home/user2/targetfolder und */ , wobei letzteres von der Shell erweitert wird, um allen nicht versteckten Unterverzeichnissen (z. B. Documents/ , Videos/ usw.) zu entsprechen. )

Anführen des Dateinamensmusters oder Auslassen des Leerzeichens,wie in

sudo rm -r "/home/user2/targetfolder "*/

or

sudo rm -r /home/user2/targetfolder\ */

hätte /home/user2/targetfolder (something)/ und andere passende Ordner, falls vorhanden, eingeschlossen.

Im Allgemeinen ist eine solche Verwendung von rm -r und dann in Kombination mit sudo , wie Sie erfahren haben, äußerst gefährlich. Führen Sie einen solchen Befehl nicht sofort aus, sondern überprüfen Sie ihn zuerst.

  • Ersetzen sudo rm -r durch ls -d . Dadurch werden alle Elemente aufgelistet, die in Ihren Argumenten enthalten sind, und Sie können vorher überprüfen, was entfernt wird (Danke an cocomac für den Tipp).
  • Sobald ls auflistet, was Sie entfernen möchten, drücken Sieum diesen Befehl abzurufen und ls -d in sudo rm -r zu ändern .

Wenn ein einzelnes Verzeichnis entfernt werden muss,sollten Sie die Verwendung von Platzhaltern ganz vermeiden.Verwenden Sie die Tabulatorvervollständigung.Auf diese Weise können Sie sicher sein,dass der spezifische Name in der Befehlszeile korrekt eingegeben wird.