trash-cli
使用trash-cli 通过将文件移动到系统垃圾箱而不是永久删除它们来安全地删除文件。这可以防止意外数据丢失并允许文件恢复。当您想要可恢复的删除时,请使用而不是 rm。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~xlionjuan-trash-clicURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~xlionjuan-trash-cli/file -o xlionjuan-trash-cli.md## 概述(中文) 使用trash-cli 通过将文件移动到系统垃圾箱而不是永久删除它们来安全地删除文件。这可以防止意外数据丢失并允许文件恢复。当您想要可恢复的删除时,请使用而不是 rm。 ## 原文 # trash-cli A command line interface to the freedesktop.org trashcan. It trashes files recording the original path, deletion date, and permissions. It uses the same trashcan used by KDE, GNOME, and XFCE. ## Installation ```bash # Via Homebrew (Linux/macOS) brew install trash-cli # Via pip pip install trash-cli # Via apt (Debian/Ubuntu) sudo apt install trash-cli # Via pacman (Arch Linux) sudo pacman -S trash-cli # Via dnf (Fedora) sudo dnf install trash-cli ``` ## Commands Overview | Command | Description | |---------|-------------| | `trash-put` | Move files/directories to trash | | `trash-list` | List trashed files | | `trash-restore` | Restore trashed files | | `trash-empty` | Permanently delete trashed files | | `trash-rm` | Remove specific files from trash | ## trash-put Move files or directories to the trash can. ```bash trash-put <file> # Trash a file trash-put <dir>/ # Trash a directory trash-put -f <file> # Silently ignore nonexistent files trash-put -v <file> # Verbose output ``` ### Options - `-f, --force` - Silently ignore nonexistent files - `-v, --verbose` - Explain what is being done - `--trash-dir TRASHDIR` - Use TRASHDIR as trash folder ### Notes - Unlike `rm`, `trash-put` does not require `-R` for directories - Files trashed from home partition go to `~/.local/share/Trash/` - Files from other partitions go to `$partition/.Trash/$uid` or `$partition/.Trash-$uid` ## trash-list List all trashed files. ```bash trash-list # List all trashed files trash-list | grep <pattern> # Search for specific files trash-list --all-users # List trashcans of all users ``` ### Output Format ``` 2008-06-01 10:30:48 /home/user/bar 2008-06-02 21:50:41 /home/user/baz ``` Format: `deletion_date original_path` ## trash-restore Restore trashed files to their original location. ```bash trash-restore # Interactive restore trash-restore --overwrite # Overwrite existing files trash-restore --sort date # Sort by date (default) trash-restore --sort path # Sort by path ``` ### Interactive Mode ``` $ trash-restore 0 2007-08-30 12:36:00 /home/andrea/foo 1 2007-08-30 12:39:41 /home/andrea/bar 2 2007-08-30 12:39:41 /home/andrea/baz What file to restore [0..2]: 0 ``` - Enter the number to restore that file - Use `0-2,3` to restore multiple files - Use `--overwrite` to replace existing files ## trash-empty Permanently remove files from trash. ```bash trash-empty # Remove ALL trashed files trash-empty 7 # Remove files older than 7 days trash-empty 1 # Remove files older than 1 day ``` ### Examples ```bash # Delete everything in trash trash-empty # Keep only files from the last 7 days trash-empty 7 # Keep only today's files trash-empty 1 ``` ## trash-rm Remove specific files from trash (by pattern). ```bash trash-rm <pattern> # Remove files matching pattern trash-rm '*.o' # Remove all .o files trash-rm foo # Remove all files named "foo" trash-rm /full/path # Remove by original path ``` **Note**: Use quotes to protect pattern from shell expansion. ```bash trash-rm '*.log' # Correct trash-rm *.log # Wrong - shell will expand ``` ## Safety Tips ### Replace rm with trash-put Add to `.bashrc` or `.zshrc`: ```bash # Remind yourself not to use rm directly alias rm='echo "Use trash-put instead!"; false' # Or use a safer alias alias rm='trash-put' ``` To bypass the alias when you really need `rm`: ```bash \rm file.txt ``` ### Recovery Workflow 1. Check what's in trash: `trash-list` 2. Find your file: `trash-list | grep <filename>` 3. Restore: `trash-restore` ## Trash Location - **Home partition**: `~/.local/share/Trash/` - **Other partitions**: `$mount_point/.Trash/$uid` or `$mount_point/.Trash-$uid` ## Limitations - Does not support BRTFS volumes - Cannot trash files from read-only filesystems ## FAQ ### Creating a top-level .Trash directory If you need to create a trash directory on a different partition: ```bash sudo mkdir --parent /.Trash sudo chmod a+rw /.Trash sudo chmod +t /.Trash ``` ### Should I alias rm to trash-put? **The author advises against this.** Although `trash-put` seems compatible with `rm`, it has different semantics that will cause problems. For example, while `rm` requires `-R` for deleting directories, `trash-put` does not. Instead, use a warning alias: ```bash alias rm='echo "This is not the command you are looking for."; false' ``` To bypass when you really need `rm`: ```bash \rm file.txt ``` ## See Also - [Official GitHub](https://github.com/andreafrancia/trash-cli) - [FreeDesktop.org Trash Spec](https://specifications.freedesktop.org/trash/latest/)