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.

Kommentare

20 Antworten zu „Trash-CLI – die sicherere Alternative zu rm“

  1. Avatar von André
    André

    Bestes Tool!

    Das ist etwas gewesen, wo ich nie verstanden habe, dass es nicht Standard ist bei Linux.

    Seit ich es vor x Jahren fand, ist es auf jeder Installation von mir der Ersatz von RM 😉

  2. Avatar von Alex
    Alex

    Das ist mal wieder ein richtig tolles kleines Tool was du da vorgestellt hast.
    Danke Danke Danke dafür!

  3. Avatar von Cinux
    Cinux

    Und das sagt er uns jetzt… 🤣

  4. Avatar von kamome
    kamome

    Danke, dann wäre vielleicht noch ein alias rm='trash' im rc-file der Shell hilfreich – wenn man _nie_ an einem anderen Rechner das Terminal verwendet!

  5. Avatar von perko
    perko

    Ich bin auch ein CLI jockey. Aber trash-cli kannte ich noch nicht. Cool, danke! You made my day.

  6. Avatar von Kermet
    Kermet

    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.

    1. Avatar von tuxnix
      tuxnix

      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. Avatar von Kermet
        Kermet

        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.

        1. Avatar von tuxnix
          tuxnix

          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

  7. Avatar von Klaus Behringer
    Klaus Behringer

    Einen „Papierkorb“ gibt es bei mir nicht, wozu auch?

    rm -r
    

    ist vollkommen ausreichend.

  8. Avatar von Atalanttore
    Atalanttore

    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.

  9. Avatar von sven
    sven

    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…

    1. Avatar von Sven
      Sven

      Was habt Ihr eigentlich gegen Kommandozeilen-DAUs? Irgendwie muss man das Zeug ja auch lernen… Hat nicht jeder hier schon 30 Jahre Erfahrung mit Linux oder ein Informatikstudium.

      1. Avatar von Kermet
        Kermet

        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.

      2. Avatar von Klaus Behringer
        Klaus Behringer

        Was habt Ihr eigentlich gegen Kommandozeilen-DAUs?

        Es gibt genügend wirksame Mittel.

  10. Avatar von Sven
    Sven
    sudo apt install trash-cli
    
    1. Avatar von Klaus Behringer
      Klaus Behringer

      Das „sudo“ disqualifiziert bereits.

  11. Avatar von HIER! ICH!
    HIER! ICH!

    „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)

    1. Avatar von Ferdinand

      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!

      1. Avatar von HIER! ICH!
        HIER! ICH!

        „Der Aufmacher ist eher eine reißerische Einleitung“
        Schon klar, ich habe auch durchaus darüber geschmunzelt 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert