{"repo":"nvrmnd-png/undo","free":true,"listed":false,"github":"https://github.com/nvrmnd-png/undo","clone":"git clone https://github.com/nvrmnd-png/undo.git","description":"Undo mv, rm, cp and more from your shell. Journaled to SQLite, deletions go to the trash, nothing gets lost.","language":"Rust","stars":65,"topics":["bash","cli","coreutils","devtools","filesystem","fish-shell","gplv3","rust","shell","sqlite"],"license":"MIT","category":"cli-tools","readme_excerpt":"undo mv file.txt archive/ , oops, undo . Reversible mv , cp , rm and friends, with a freedesktop trash safety net. Shell filesystem commands are unforgiving: once you mv over a file or rm a directory, there is no built-in way back. undo journals every supported operation and reverses it on demand, and it never deletes anything outright, so even rm is recoverable. It works by intercepting commands rather than watching them: a small shell integration routes mv , cp , rm , … through undo, which performs the operation itself in Rust and records exactly how to invert it. Deletions go to the freedesktop.org trash, overwritten files are backed up there first, and every rollback verifies file integrity before touching anything. Supported commands mv · cp · rm · mkdir · rmdir · chmod · chown · ln · rename rm and rmdir move to the trash instead of deleting. Overwrites ( mv , cp , ln -f ) park the displaced file in the trash so they are fully reversible. rename uses the Perl s/old/new/ syntax. Install manager.sh install --source builds with cargo and installs to /.local/bin ; --prebuilt downloads a release binary and verifies its SHA-256. Override the location with UNDO PREFIX . Or use cargo directly: Enable the shell integration undo only records commands that go through its wrappers. Add one line to your shell startup file: Open a new shell and your everyday mv / cp / rm /… become undoable. Bypass the wrapper for a single call with command mv … or \\mv … . Usage Command Does --- --- un","default_branch":null,"files":null,"tree":[],"storefront":"/r/nvrmnd-png","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/nvrmnd-png/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."}