Linux系统默认并没有内置的回收站机制,但可以通过一些方法实现类似的功能。在Linux中,回收站的工作原理主要是通过重定义 rm
命令并创建相应的辅助功能来模拟Windows回收站的安全删除。以下是几种实现Linux回收站的方法:
trash-cli
工具trash-cli
是一个命令行工具,可以提供更高级的回收站管理功能。以下是使用 trash-cli
的基本操作:
安装:
sudo apt-get install trash-cli # 对于Debian/Ubuntu系统
sudo dnf install trash-cli # 对于Fedora系统
列出回收站内容:
trash list
恢复文件:
trash restore file_name
清空回收站:
trash empty
可以通过编写简单的Shell脚本来实现回收站功能。以下是一个简单的示例脚本:
#!/bin/bash
TRASH_DIR="$HOME/.trash"
# 检查回收站目录是否存在,不存在则创建
if [ ! -d "$TRASH_DIR" ]; then
mkdir -p "$TRASH_DIR"
fi
# 检查是否提供了文件名参数
if [ $# -eq 0 ]; then
echo "Usage: $0 [file1 file2 ...]"
exit 1
fi
# 遍历所有传递的文件参数
for file in "$@"; do
if [ -e "$file" ]; then
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BASENAME=$(basename "$file")
NEW_NAME="${BASENAME}_${TIMESTAMP}"
mv "$file" "$TRASH_DIR/$NEW_NAME"
echo "$file is deleted!"
else
echo "'$file' does not exist!"
fi
done
将上述脚本保存为 rmsafe
,并通过 chmod +x rmsafe
使其具备执行权限。之后,每当需要删除文件时,只需使用 rmsafe
代替原来的 rm
命令即可。
可以为 rm
命令设置别名,如 rmtrash
,这样每次执行删除操作时,实际上是将文件移动到回收站而不是直接删除。
alias rm='rmtrash'
然后,将以下内容添加到 .bashrc
或 .zshrc
文件中:
# 回收站目录
TRASH_DIR="$HOME/.trash"
# 确保回收站目录存在
if [ ! -d "$TRASH_DIR" ]; then
mkdir -p "$TRASH_DIR"
fi
# 自定义 rm 命令
function rmtrash() {
for file in "$@"; do
if [ -e "$file" ]; then
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BASENAME=$(basename "$file")
NEW_NAME="${BASENAME}_${TIMESTAMP}"
mv "$file" "$TRASH_DIR/$NEW_NAME"
echo "$file is deleted!"
else
echo "'$file' does not exist!"
fi
done
}
之后,重新加载配置文件使更改生效:
source ~/.bashrc
为了防止回收站占用过多的磁盘空间,可以编写一个脚本定期清理回收站中的过期文件,或者手动进行清理操作。
#!/bin/bash
TRASH_DIR="$HOME/.trash"
# 删除30天前的文件
find "$TRASH_DIR" -type f -mtime +30 -exec rm -f {} \;
echo "Trash cleaned up."
将该脚本保存为 clean_trash.sh
,并赋予其可执行权限:
chmod +x clean_trash.sh
为了让清理任务自动化执行,可以将此脚本添加到 crontab
中,例如每天运行一次:
(crontab -l; echo "0 0 * * * /bin/clean_trash.sh") | crontab -