{"repo":"edaywalid/undo","free":true,"listed":false,"github":"https://github.com/edaywalid/undo","clone":"git clone https://github.com/edaywalid/undo.git","description":"Undo what the last shell command did to the filesystem","language":"Go","stars":373,"topics":["cli","developer-tools","filesystem","ld-preload","linux","safety","shell","undo"],"license":"MIT","category":"cli-tools","readme_excerpt":"undo Revert what the last shell command did to the filesystem. Website: undo.edaywalid.com Works for the classic mistakes: rm / rm -rf , mv over a file you needed, truncating with , an accidental chmod -R , files and directories created by a script that ran amok. Changed your mind again? undo redo re-applies. Undo never deletes anything permanently, only parks it in the session store, so a session toggles between undone and applied as many times as you like. Contents - Why - How it works - Install - Usage - Storage and disk space - what it keeps, for how long, and what it costs you - Ignoring build noise - Configuration - every environment variable - What it cannot catch - Secure deletion - read this before shred - Platform support - Upgrading and Uninstalling - Development Why The shell has never had an undo, and the usual advice is that once data is overwritten it is gone. The tools that do exist ask you to change your habits first: alias rm to a trash command, or set up btrfs/zfs snapshots before the accident. undo asks for nothing. You keep typing rm , and the safety net is already under you, even when the deletion happens three processes deep inside a build tool where no alias could reach. It is command-granular, not time-granular: it reverts exactly what that one command touched, on any filesystem, without root. That is the difference from a snapshot, which rolls the whole tree back to a point in time and takes your good work with it. How it works There is no snapshotti","default_branch":null,"files":null,"tree":[],"storefront":"/r/edaywalid","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/edaywalid/undo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}