Trash-CLI – die sicherere Alternative zu rm

Photo by Pawel Czerwinski on Unsplash

Wer als Kommandozeilen-Ritter noch nie eine Datei versehentlich mit rm [wichtige Datei] oder gleich ein ganzes Verzeichnis mit rm -r gelöscht hat, der hebe jetzt die Hand. OK, keiner, ist also jedem schon mal passiert. Wohl dem, der dann ein Backup hat. Aber darum geht es hier nicht, sondern um eine sicherere Alternative zu dem rigorosen Befehl rm.

Pendant zum Mülleimer der Desktops

Es geht um ein Paket, das keinen hohen Bekanntheitsgrad hat, obwohl es in fast allen Distributionen verfügbar ist. Ich kannte es bis vor kurzem auch nicht, bevor ich zufällig über diesen Blogeintrag stolperte. Die kleine Anwendung, um die es geht und die bereits seit 14 Jahren entwickelt wird, heißt trash-cli und stellt das Pendant zum Mülleimer der gängigen Desktops dar, mit denen es sogar zusammenarbeitet. Trash-cli löscht Dateien unter Angabe des ursprünglichen Pfads, des Löschdatums und der Berechtigungen. Es verwendet den gleichen Mülleimer wie KDE, GNOME und Xfce, wird aber auch von der Kommandozeile (und Skripten) aus aufgerufen werden. Trash.cli richtet sich dabei nach der Spezifikation von Trash von freedesktop.org.

Installation

Wie bereits erwähnt, ist trash-cli weit verbreitet, allerdings meist in der veralteten Version 0.17.1.14-x. Wer die aktuelle Version 0.21.7.24 bevorzugt, muss den Python-Paket-Installer pip bemühen, der in Debian und seinen Ablegern mit dem Befehl sudo apt install python3-pip installiert werden kann. Unter Fedora führt sudo dnf install python3-pip zum Ziel. Daraufhin wird die Anwendung mit pip install trash-cli installiert.

Verwendung

Dann kann mit trash-put foo, oder vereinfacht mit trash foo die erste Datei oder Verzeichnis in den Müll verschoben werden. Dabei werden die Inhalte in ~/.local/share/Trash/files abgelegt, dem Ort, der auch die zu löschenden Inhalte der unterstützten Desktop-Umgebungen aufnimmt. Das Tool unterstützt die Autovervollständigung, sodass Inhalte mit Leerstellen im Titel automatisch escaped werden.

Wenn dann mit trash-list mehr als der eben zum Löschen vorgemerkte Inhalt angezeigt wird, dann sind dies Inhalte im Mülleimer der jeweiligen Desktop-Umgebung. Wiederherstellen lassen sich Inhalte mittels trash-restore, wobei aber nur Inhalte zur Auswahl stehen, die auch mit der CLI-Version in den Mülleimer gelegt wurden. Das Entfernen temporärer Inhalte des Mülleimers gelingt wiederum mit trash-rm '*~' und erlaubt so eine bessere Übersicht über die restlichen Inhalte.

Trash benötigt nur wenige Befehle, um seine Aufgabe zu erfüllen:

trash-put (vereinfacht: trash)   Dateien und Verzeichnisse in den Mülleimer schieben.
trash-empty                      Mülleimer leeren
trash-rm [foo]                   einzelne Inhalte aus dem Mülleimer löschen
trash-list                       Dateien im Mülleimer auflisten
trash-restore                    Datei aus dem Mülleimer wiederherstellen

Alles weitere Wissenswerte über trash-cli hält die entsprechende GitHub-Seite bereit.

Teilt den Beitrag, falls ihr mögt

20 Kommentare

  1. “Wer als Kommandozeilen-Ritter noch nie eine Datei versehentlich mit rm -r [wichtige Datei] oder gleich ein ganzes Verzeichnis mit rm -rf gelöscht hat, der hebe jetzt die Hand”

    HIER! ICH!
    Ich kann mich auch nach 16 Jahren Linux und tagtäglich sowohl privat als auch beruflich auf der Kommandozeile tatsächlich nicht daran erinnern, auch nur einmal versehentlich etwas gelöscht zu haben, was ich nicht löschen wollte. Bin ich damit tatsächlich der Einzige hier?

    Bezüglich der Syntax müsste ich allerdings ein wenig Kritik los werden:
    (wichtige) Dateien löscht man mit “rm”. Verzeichnisse mit “rm -r”. -f bzw. –force ist für “ignore nonexistent files and arguments, never prompt”
    Sich anzugewöhnen dass man Dateien immer mit “rm -r” oder gar mit “rm -rf” löscht ist einfach nur unglaublich schlechter Stil und verlangt geradezu danach, bestraft zu werden.

    Davon abgesehen ist der Artikel für Leute, die nicht wissen, was sie löschen, sicherlich hilfreich! (duck & weg)

    0
    1. Der Aufmacher ist eher eine reißerische Einleitung, denn man liest ja immer in der Linux-Folklore wieder von solchen Vorkommnissen. Deine Kritik ist natürlich berechtigt, da ist mir die Syntax entglitten. Habs mal berichtigt. Merkwürdig, dass es sonst niemandem aufgefallen ist. Danke!

      0
  2. sven@ace:~/Downloads$ pip install trash-cli

    Der Befehl ‘pip’ wurde nicht gefunden, meinten Sie:

     Befehl ‘php’ aus dem deb php7.4-cli (7.4.3-4ubuntu2.5)

    Versuche: sudo apt install <deb name>

    ach nee, pip3 heißt das ja…

    -7
      1. Viele haben aber 10-20 Jahre Erfahrung aus den DOS Zeiten und kennen die Kommandozeile schon aus Tagen weit bevor sie überhaupt in Fenster herumklickten.

        Und dafür hat man früher auch kein Informatikstudium benötigt.
        Die Kommandozeile kann jeder lernen.

        Die Grundlagen sind jetzt nicht so schwer. Wechsel in und aus Verzeichnissen.
        Sowie die Befehle cp, mv, mkdir, ls, chmod, chown, man und noch irgend nen Editor um Dateien anzulegen, sowie den Stern Operator und schon hat man alles wichtige um darin zu navigieren, Dateien zu verschieben und zu bearbeiten oder anzulegen oder sich Hilfe zu suchen.

        Das erweiterte Wissen sind dann Befehle wie sed, awk, grep, getfacl, setfacl, ssh, sftp usw.. Sowie erweitertes Operatorwissen über ?! für eine präzisere Filterung von Dateien.

        Wenn man die Grundlagen kann, dann wächst man in den Rest automatisch rein.

        0
  3. Ich habe noch nie aus Versehen eine Datei in der Konsole gelöscht, weil ich die Konsole nur im Ausnahmefall benutze.

    Die richtige Linux-Distribution vorausgesetzt, kommt man unter Linux ohne Konsole fast genauso gut aus wie unter Windows 10.

    -7
  4. Brauch ich nicht. Habe ich noch nie gebraucht. Ich habe Backups.

    Beim Desktop mit dem Dateimanager kann es Sinn machen, denn da kann man sich mit der Maus verklicken. Beim Tabbing in der Shell passiert einem das eher nicht.

    Aber selbst da, im Dateimanager unter Dolphin (KDE) habe ich unter “Einstellungen -> Dolphin Eigenschaften -> Dienste -> Löschen” den Dienst “Löschen” aktiviert, damit ich nen richtigen Löschbutton habe im Rechtsklick Kontextmenu habe und die Daten eben gerade nicht in den Mülleimer verschoben werden, sondern gleich gelöscht werden.

    0
    1. Mach ich genauso. Das Problem beim Papierkorb ist, dass niemand den Müll raus bringt.
      Ich bin einfach zu faul dazu. 1x hab ich mir was versehentlich gelöscht und ja, ich hab ein backup und das läuft automatisch. Aber trotzdem ein schönes Tool für alle die den Papierkorb lieben.

      1
      1. Manche Nutzer verleitet dieses Dilemma dazu, dass sie nach dem Verschieben in den Papierkorb auch noch gleich den Papierkorb leeren. Wenn man aber das so macht, dann kann man sich den ganzen Umweg über den Papierkorb auch gleich sparen.

        Damit der Papierkorb also etwas bringt, müsste er aktiv verhindern, dass man den Papierkorb gleich leert. Nur dann hätte das überhaupt einen Nutzen.
        Und dem entgegen steht halt, das der Nutzer vielleicht dringend Platz freischaufeln muss.

        Man sollte sich also schon beim Löschen gut überlegen, ob man etwas löschen will oder nicht. Alles andere ist der gleiche Blödsinn, wie der Selbstbetrug, wenn man seine Uhren alle 30 min vorstellt, weil man Angst hat, den nächsten Bus zu verpassen.

        Unter Windows komme ich nicht darum herum, dass das Zeug im Papierkorb landet.
        Da ich immer genau darauf achte, was ich lösche, habe ich mir daher angewöhnt den Papierkorb regelmäßig und ungesehen zu löschen, also so, ohne dass ich vorher da rein schaue. Denn was ich darin mal verschoben habe, das soll auch gelöscht werden.
        Nach diesem Motto handel ich. Also muss ich da auch nicht mehr im Müll herumsuchen und nachgucken ob sich da vielleicht etwas verirrt hat, was ich doch brauche.
        Wenn es so etwas gibt, dann habe ich dafür die Backups und Snapshots.

        -3
        1. Komm, wir programmieren jetzt den Papierkorb, der sich selbst entleert.
          Alle vier Wochen z.B. wird dann ausschließlich nur das endgültig gelöscht was da schon 4 Wochen rumlag ohne vermisst zu werden. Wenn das script 5 Zeilen lang wird und sich im Schema aabba reihmt ist es ein Limmerick. 😉

          Karl war ordentlich und fein
          Schiss all den Müll in den Parpierkorb rein
          Doch zum Leeren fehle ihm der Mut
          “Vielleicht ist hier noch was gut”
          und warte geduldig auf den Gevatter Hain

          0

Kommentar hinterlassen