一招教你如果避免rm /*误操作的坑

2134

使用linux经常都会需要删除某个文件或者文件夹,但是如果不小心将路径写错,就会导致格盘的悲剧。
如何避免这种事情发生呢?写一个脚本并并设置别名代替默认rm的功能:
首先,新建一个rm.sh文件(名称随意,位置可以自己修改)

$ cd /usr/src
$ sudo touch rm.sh
$ sudo vim ./rm.sh

然后填充内容

#!/bin/sh

# 这里指定回收站的位置,我的系统是manjaro回收站就在这里,你也可以随便制定回收站的位置比如~/.trash
# 制定了回收站的位置后记得先创建文件夹,否则需要在一个会儿设置别名的
# 地方配置一行mkdir -p ~/.trash
trashpath="/home/guqing/.local/share/Trash/files"

# 恢复制定文件
undelfile() {
    mv -i $trashpath/$@ ./
}

# 移动文件到回收站
trash() {
    mv $@ $trashpath/
}

# 清空回收站
cleartrash() {
  echo -n "Are you sure to do this?[Y/N]:"
  read reply

  if [ "${reply}" != "n" ] && [ "${reply}" != "N" ]; then
    if [ $(ls $trashpath | wc -l) -eq "0" ]; then
      echo "The trash is already clean"
    else
      /bin/rm -rf $trashpath/*
    fi
  fi
}

写好这个shell脚本后,制定执行权限

$ sudo chmod +x ./rm.sh

然后配置别名,由于我用的是zsh所以我修改~/.zshrc文件,如果没有更换过shell的同学可以修改~/.bashrc文件是一样的,在文件中找个地方写上如下内容,比如我添加在末尾

# 回收站
# 如果改了回收站位置并且没有新建文件夹的在这里配置:mkdir -p ./.trash,不建议还是手动新建一下
# source是引入rm.sh脚本,如果位置不是这个自行更改
source /usr/src/rm.sh

# 删除文件或文件夹
alias rm=trash

# 从回收站恢复制定文件
alias ur=undelfile

# 清空回收站
alias mcls=cleartrash

保存退出,然后source一下,让其生效

source .zshrc
# 或者
source .bashrc 

大功告成,测试删除

# 删除文件到回收站
rm ./hello.text

# 删除多级文件夹test/adc/gef
rm ./test