ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 防止 rm -rf 带来的灾难

防止 rm -rf 带来的灾难

原创 Linux操作系统 作者:skyin_1603 时间:2016-10-18 14:59:30 0 删除 编辑
在系统用户的home目录下创建回收站trash:

--首先进入到root或者oracle用户下:

--编辑.bash_profile文件:
[root@enmo ~]# vi .bash_profile
# .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi


# User specific environment and startup programs


PATH=$PATH:$HOME/bin


export PATH
unset USERNAME

--打开之后,在最底下加入以下代码:

--创建回收站的代码:
mkdir -p ~/.trash


alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile


undelfile()
{
  mv -i ~/.trash/$@ ./
}


trash()
{
  mv $@ ~/.trash/
}




--清空回收站的代码:
cleartrash()
{
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /usr/bin/rm -rf ~/.trash/*
}


~
".bash_profile" 43L, 492C written
[root@enmo ~]# 


以上是两段不一样的代码,上半段是创建回收站的代码。创建了回收站之后,当用户在系统上删除了文件或者目录,
被删除了的文件或目录就会放到回收站里。这里也先说清楚,创建了回收站之后,用户就没有"rm -rf"操作了,
删除文件或者目录就直接用rm 操作,也相当与mv操作,将文件或目录从原来的位置移动到回收站里。当当误删除文件
时候,可以从回收站里恢复回去,用到命令:ur filename,或者用cp与mv回去原来的位置,这样就达到恢复目的。
避免了rm -rf不能恢复的状况。
测试过程如下:


--创建测试目录my:
[root@enmo ~]# ls
anaconda-ks.cfg  Desktop  install.log  install.log.syslog

[root@enmo ~]# cd Desktop
[root@enmo Desktop]# ls
new file~  vmware-tools-distrib

[root@enmo Desktop]# mkdir my

[root@enmo Desktop]# ls
my  new file~  vmware-tools-distrib

[root@enmo Desktop]# cd my
[root@enmo my]# ls

--创建测试文件mysong并编辑内容:
[root@enmo my]# touch mysong
[root@enmo my]# vi mysong 
my heart will go on and on.
~
~
~
... ...
~
~
~
"mysong" 1L, 28C written
[root@enmo my]# 
[root@enmo my]# ls
mysong

[root@enmo my]# cat mysong 
my heart will go on and on.
[root@enmo my]# 

[root@enmo Desktop]# cat new          ----这里的new也是一个测试文件。
ddjjj
[root@enmo Desktop]# 

--删除文件与目录:
[root@enmo Desktop]# rm  new
[root@enmo Desktop]# ls
my  new file~  vmware-tools-distrib

[root@enmo Desktop]# rm my      ----my创建时是一个目录,现在删除直接用rm就可以完成。
[root@enmo Desktop]# ls
new file~  vmware-tools-distrib

[root@enmo Desktop]# ls
new file~  vmware-tools-distrib

--进入回收站查看
:
[root@enmo ~]# cd .trash
[root@enmo .trash]# ls
my  new

里面是刚才删除的文件与目录,其中my是目录,new是文件。

下半段代码就是清空回收站的代码,当想清空回收时,只需要执行命令:cleartrash 就可以了。
这里只是在root用户下的回收站函,只有root用户可以用。类似的可以在oracle用户或用户下创建
他们各自的回收站。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2126655/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-09-06

  • 博文量
    231
  • 访问量
    215114