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
CODEBLOCK0
Commands Overview
| Command | Description |
|---|
| INLINECODE0 | Move files/directories to trash |
| INLINECODE1 |
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.
CODEBLOCK1
Options
- -
-f, --force - Silently ignore nonexistent files - INLINECODE6 - Explain what is being done
- INLINECODE7 - Use TRASHDIR as trash folder
Notes
- - Unlike
rm, trash-put does not require -R for directories - Files trashed from home partition go to INLINECODE11
- Files from other partitions go to
$partition/.Trash/$uid or INLINECODE13
trash-list
List all trashed files.
CODEBLOCK2
Output Format
CODEBLOCK3
Format: INLINECODE14
trash-restore
Restore trashed files to their original location.
CODEBLOCK4
Interactive Mode
CODEBLOCK5
- - 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.
CODEBLOCK6
Examples
CODEBLOCK7
trash-rm
Remove specific files from trash (by pattern).
CODEBLOCK8
Note: Use quotes to protect pattern from shell expansion.
CODEBLOCK9
Safety Tips
Replace rm with trash-put
Add to .bashrc or .zshrc:
CODEBLOCK10
To bypass the alias when you really need rm:
CODEBLOCK11
Recovery Workflow
- 1. Check what's in trash: INLINECODE20
- Find your file: INLINECODE21
- Restore: INLINECODE22
Trash Location
- - Home partition: INLINECODE23
- Other partitions:
$mount_point/.Trash/$uid or INLINECODE25
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:
CODEBLOCK12
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:
CODEBLOCK13
To bypass when you really need rm:
CODEBLOCK14
See Also
trash-cli
一个用于freedesktop.org回收站的命令行界面。它能够回收文件,并记录原始路径、删除日期和权限。它使用与KDE、GNOME和XFCE相同的回收站。
安装
bash
通过 Homebrew(Linux/macOS)
brew install trash-cli
通过 pip
pip install trash-cli
通过 apt(Debian/Ubuntu)
sudo apt install trash-cli
通过 pacman(Arch Linux)
sudo pacman -S trash-cli
通过 dnf(Fedora)
sudo dnf install trash-cli
命令概览
| 命令 | 描述 |
|---|
| trash-put | 将文件/目录移动到回收站 |
| trash-list |
列出已回收的文件 |
| trash-restore | 恢复已回收的文件 |
| trash-empty | 永久删除已回收的文件 |
| trash-rm | 从回收站中移除特定文件 |
trash-put
将文件或目录移动到回收站。
bash
trash-put <文件> # 回收一个文件
trash-put <目录>/ # 回收一个目录
trash-put -f <文件> # 静默忽略不存在的文件
trash-put -v <文件> # 详细输出
选项
- - -f, --force - 静默忽略不存在的文件
- -v, --verbose - 解释正在执行的操作
- --trash-dir TRASHDIR - 使用TRASHDIR作为回收文件夹
说明
- - 与rm不同,trash-put处理目录时不需要-R参数
- 从主分区回收的文件会进入~/.local/share/Trash/
- 从其他分区回收的文件会进入$partition/.Trash/$uid或$partition/.Trash-$uid
trash-list
列出所有已回收的文件。
bash
trash-list # 列出所有已回收的文件
trash-list | grep <模式> # 搜索特定文件
trash-list --all-users # 列出所有用户的回收站
输出格式
2008-06-01 10:30:48 /home/user/bar
2008-06-02 21:50:41 /home/user/baz
格式:删除日期 原始路径
trash-restore
将已回收的文件恢复到其原始位置。
bash
trash-restore # 交互式恢复
trash-restore --overwrite # 覆盖现有文件
trash-restore --sort date # 按日期排序(默认)
trash-restore --sort path # 按路径排序
交互模式
$ 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
要恢复哪个文件 [0..2]: 0
- - 输入编号以恢复该文件
- 使用0-2,3恢复多个文件
- 使用--overwrite替换现有文件
trash-empty
从回收站中永久删除文件。
bash
trash-empty # 删除所有已回收的文件
trash-empty 7 # 删除超过7天的文件
trash-empty 1 # 删除超过1天的文件
示例
bash
删除回收站中的所有内容
trash-empty
只保留最近7天的文件
trash-empty 7
只保留今天的文件
trash-empty 1
trash-rm
从回收站中移除特定文件(按模式匹配)。
bash
trash-rm <模式> # 移除匹配模式的文件
trash-rm *.o # 移除所有.o文件
trash-rm foo # 移除所有名为foo的文件
trash-rm /完整/路径 # 按原始路径移除
注意:使用引号保护模式不被shell展开。
bash
trash-rm *.log # 正确
trash-rm *.log # 错误 - shell会展开
安全提示
用trash-put替代rm
添加到.bashrc或.zshrc:
bash
提醒自己不要直接使用rm
alias rm=echo 请改用trash-put!; false
或使用更安全的别名
alias rm=trash-put
当确实需要使用rm时绕过别名:
bash
\rm file.txt
恢复工作流程
- 1. 检查回收站内容:trash-list
- 查找文件:trash-list | grep <文件名>
- 恢复:trash-restore
回收站位置
- - 主分区:~/.local/share/Trash/
- 其他分区:$挂载点/.Trash/$uid或$挂载点/.Trash-$uid
限制
- - 不支持BRTFS卷
- 无法回收只读文件系统中的文件
常见问题
创建顶级.Trash目录
如果需要在不同分区上创建回收目录:
bash
sudo mkdir --parent /.Trash
sudo chmod a+rw /.Trash
sudo chmod +t /.Trash
是否应该将rm别名为trash-put?
作者建议不要这样做。 虽然trash-put看起来与rm兼容,但它具有不同的语义,会导致问题。例如,rm删除目录需要-R参数,而trash-put不需要。
相反,使用警告别名:
bash
alias rm=echo 这不是你要找的命令。; false
当确实需要使用rm时绕过别名:
bash
\rm file.txt
参见