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"
# 確?;厥照灸夸洿嬖?/span>
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 -