一招教你如果避免rm /*误操作的坑
使用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