linux大工程 - 我要一个属于自己的回收站

我要开始装13了

'rm -rf 是一个很"粗鲁"的命令,就像windows的shift+delete,删除的文件是无法找回的(当然,除了数据恢复软件,但是很麻烦,很费时)'
'为了防止自己的误操作而删除了重要的文件(咱总不能删库就跑路吧),可以利用以下的方法,为自己建立一个回收站'
linux-oz6w:~ # vim /etc/profile
####### trash #######
mkdir -p ~/.trash          # 路径可以自己创建和命名,不受限制,修改路径名后,记得修改下面三个函数里面的路径
alias rm=trash             # 将rm别名成trash,调用trash函数
alias ur=undelfile         # 使用别名定义一个ur命令,调用undelfile函数,作用是还原文件

function undelfile(){
    
          # 通过$@将ur后面的参数逐一传给mv移动到当前目录下
  mv -i ~/.trash/$@ ./     # mv -i 当目标文件存在时,提示是否覆盖
}

function trash(){
    
              # 在终端输入的rm命令,会通过别名alias调用trash函数,再通过$@将rm后面的参数逐一传给mv移动到.trash目录下
  mv $@ ~/.trash/
}

function cleartrash(){
    
         # 在终端输入 cleartreash ,就会调用这里的函数,输入'y 或 Y',就会清空.trash目录下的内容
    read -p "clear sure?[n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ~/.trash/*    # /bin/rm 不受别名的限制,会直接删除文件
}
####### trash end #######
linux-oz6w:~ # source /etc/profile    # 重新加载环境变量

测试一下,不能打脸

linux-oz6w:~ # echo test > test.txt
linux-oz6w:~ # cat test.txt
test
linux-oz6w:~ # rm -f test.txt      # 使用 rm 命令删除的文件,被移动到创建的.trash目录下了
linux-oz6w:~ # ll .trash/
total 4
-rw-r--r-- 1 root root 5 Jan  1 22:46 test.txt
# 虽然rm用别名定义了,但是可以是用绝对路径删除文件,它是不会被移动到.trash目录的。请看我的表演:
linux-oz6w:~ # cd .trash/
linux-oz6w:~/.trash # ll
total 4
-rw-r--r-- 1 root root 5 Jan  1 22:46 test.txt
linux-oz6w:~/.trash # /bin/rm test.txt     # 使用/bin/rm绝对路径的方式来使用命令,会直接删除文件的(这是效果展示,做人不能这么粗鲁)
linux-oz6w:~/.trash # ll
total 0

扩展

# 如果需要定义自动清理7天删除的文件(不然的话,自己要时常看看.trash目录的大小,免得磁盘爆了都不知道),写一个crontab调用脚本就可以了。
#!/usr/bin/env bash
find ~/.trash -ctime 7 -type f -name "*" -exec /bin/rm {
    
    } \;

拉闸

'以上的内容,是在root用户下操作的,普通用户也会自动在自己的家目录下创建.trash目录'
'但是:suse发行版比较特殊,因为useradd的时候,默认是不会在/home目录下创建普通用户的家目录,所以在创建用户的时候,记得加上-m参数(centos的useradd是默认带-m参数的,就不需要在意这个细节了)'
'当然,也可以在/etc/profile里面写一个alias useradd="useradd -m" 这样,suse发行版中,创建用户就会自动生成用户家目录了'

谢幕

'2020已成往事(往事不要再提,人生已多风雨),让我们在新的一年里,将过去的不值得、不需要的东西,统统/bin/rm'
'新的一年里,集美们,让我们high起来好么~~~'

猜你喜欢

转载自blog.csdn.net/u010383467/article/details/112060846