117.info
人生若只如初见

Linux系统中回收站如何工作

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 脚本

可以通过编写简单的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 - 

未经允许不得转载 » 本文链接:https://www.117.info/ask/fea22AzsNBQBWAlU.html

推荐文章

  • Linux中MinIO的日志文件在哪查看

    在Linux系统中,MinIO的日志文件通常位于以下几个位置:
    默认日志路径 MinIO Server日志: 默认情况下,MinIO Server的日志文件位于/var/log/minio/目录下。...

  • 如何解决Linux中PHP-FPM超时问题

    在Linux系统中,PHP-FPM(FastCGI Process Manager)超时问题通常是由于脚本执行时间过长导致的。要解决这个问题,你可以尝试以下方法: 修改PHP-FPM配置文件: ...

  • Linux Aliases有哪些常见误区

    在Linux中,使用别名(alias)可以方便地为用户提供快捷命令或简化复杂的命令。然而,在使用别名时,也存在一些常见的误区:
    1. 别名不生效 原因:别名可能...

  • Linux下pgAdmin的日志如何查看

    在Linux系统下查看pgAdmin的日志,通常需要定位到pgAdmin的日志文件位置,然后使用适当的命令来查看这些文件。以下是查看pgAdmin日志的步骤:
    定位pgAdmin日...

  • Ubuntu中Docker容器如何管理

    在Ubuntu中,Docker容器的管理主要包括以下几个方面:
    安装与配置 安装Docker:
    sudo apt update
    sudo apt install docker.io 启动和停止Docker服...

  • Debian Postman如何跟踪邮件

    Postman 主要用于 API 开发和测试,而不是专门用于邮件监控的工具。在 Debian 系统上使用 Postman 跟踪邮件并不是一个直接的功能。不过,你可以通过以下几种方法...

  • 如何在Linux环境下部署Node.js

    在Linux环境下部署Node.js应用程序通常涉及以下几个步骤: 安装Node.js:
    首先,你需要在你的Linux系统上安装Node.js。你可以从Node.js官方网站下载适合你系...

  • Ubuntu防火墙与iptables区别

    Ubuntu 防火墙(UFW)和 iptables 是 Linux 系统中用于保护网络安全的两种不同工具,它们之间存在一些关键区别:
    Ubuntu 防火墙(UFW) 用户友好性:UFW 提...