Linux 下回收站实现(恢复删除文件)

本文主要讲述通过shell 脚本来实现Linux系统下的类似于windows系统中的回收站的功能。 默认情况下,大多数的Linux发型版本都没有实现回收站的功能,这样就会导致当你错误的删除了系统里某个文件或者错误的执行rm –rf * 命令将某些文件删除后, 我们没有很好的办法恢复已经被误删掉的文件。

下面我们通过简单的shell 脚本函数来重新定义一个trash函数,该函数将会实现当我们执行rm命令删除文件的时候,只是将文件先移动到某个临时的目录文件里,这样就可以起到一个简单回收站功能,如果需要撤销文件删除操作,我们也可以通过重新定义的另一个函数undo,来恢复被删掉的文件,该函数会将你指定的文件从临时目录里恢复到当前目录。

下面是我们实现的shell 函数:

undo( ) # 该函数用来撤销或者恢复被删掉的文件
{
    mv –i ~/.tmp/$@ ./
}

trash( ) # 该函数用来删除指定文件,并将其移动到临时目录~/.tmp/目录里
{
    mv $@  ~/.tmp/
}

cleartrash()  # 该函数用来删除回收站(临时目录)里的所有文件
{
    read -p "要删除回收站里的所有文件吗?[n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ~/.Trash/*
}

具体的执行步骤如下

1# 创建临时目录文件或者回收站文件

该目录用来临时存放被删除的文件,执行命令:

#mkdir –p  ~/.tmp

2# 将下面的脚本添加到bash shell 的环境变量设置文件.bashrc 里, 保存退出

alias rm=trash
alias ud=undo
alias tl='ls  ~/.tmp'

undo() # 该函数用来撤销或者恢复被删掉的文件
{
    mv -i ~/.tmp/$@ ./
}

trash() # 该函数用来删除指定文件,并将其移动到临时目录~/.tmp/目录里
{
    mv $@  ~/.tmp/
}

cleartrash()  # 该函数用来删除回收站(临时目录)里的所有文件
{
    read -p "要删除回收站里的所有文件吗?[n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ~/.Trash/*
}

3# 执行 .bashrc 脚本

# source ./bashrc

现在我们可以放心的使用rm命令来删除文件了,如果需要恢复被删掉的某个文件,可以使用ud 命令进行撤销删除操作,如果需要列出回收站里的文件,那么可以使用tl 命令。当回收站里的文件确实需要删除了,可以使用cleartrash命令进行清空操作。

下面来看实例操作:

$ rm fio1.txt  fio2.txt     # 删除当前目录下的fio1.txt 和fio2.txt 文件

$ tl                                # 查看回收站里文件

$ ud fio1.txt       #从回收站里恢复之前删掉的fio1.txt 文件

$ cleartrash     # 清空回收站

 

命令输出如下:

root@devops:~/osetc# rm fio1.txt fio2.txt

root@devops:~/osetc# ls

root@devops:~/osetc# tl
fio1.txt  fio2.txt

root@devops:~/osetc# ud fio1.txt

root@devops:~/osetc# tl
fio2.txt

root@devops:~/osetc# ls
fio1.txt

root@devops:~/osetc# cleartrash
要删除回收站里的所有文件吗?[n]y
root@devops:~/osetc#

99%的人还阅读了:

Leave a Reply