Linux 修改 rm 命令防止误操作
一直以来 rm 就是一个危险的操作,关于这个命令还有不少幽默段子以及真实经历,为了自己的人生不戏剧化,所以我决定对它进行改造改造。
思路上最简单的就是两种:
1. 一是修改系统登录用户根目录下的~/.bashrc
文件,这种方式定制性强,只针对单独用户生效。
2. 二是修改/etc/bashrc
文件,这种方式对系统中所有用户有效。
两种方式的区别仅为是否所有用户生效,所使用的代码是一致的,本文以第二种方式说明。
其实有很多桌面发行版已经做好了对 rm 命令的限制,比如判读一下删除目录是不是/
根目录啥的,所以想到这里就先去网上搜一搜看看有没有轮子,不重复造轮子可以节约你人生的很多时间。
于是乎找到了一位网游分享出来的成果,链接在文章底部附上,本文代码笔者略有优化:
执行以下命令对bashrc
文件进行编辑,建议先备份原文件:
#备份文件
cp /etc/bashrc /etc/bashrc.bak
#使用vi编辑文件,替代品很多例nano,vim,哪个顺手用哪个即可
vi /etc/bashrc
在文件最底部输入如下代码:
# replace 'rm' with 'saferm'
TRASH_PATH=/.trash
saferm()
{
if [ ! -d ${TRASH_PATH} ]
then
mkdir -p ${TRASH_PATH}
chmod 777 ${TRASH_PATH}
if [ $? -ne 0 ]
then
echo "Error: 'saferm' failed to create path ${TRASH_PATH}"
echo "If you do it convinced, please use '/bin/rm' to continue."
echo "If you want disable 'saferm',please 'vi /etc/bashrc' and 'source /etc/bashrc' to make it valid."
fi
fi
local dst=`mktemp -d -p ${TRASH_PATH}`
local arg=`echo $* | sed "s/\(^-\w\+\)\|\(\s-\w\+\)/ /g"`
echo "safe-rm ${arg} to ${dst}"
mv ${arg} ${dst}
}
alias rm='saferm'
其中TRASH_PATH
可以指定为你喜欢的目录,退出编辑后执行source
命令来让文件生效:
source /etc/bashrc
同理判断删除路径是否为/
也可以在该方法中判断,建议自己完善,当作学习Linux的课后作业。
参考链接:https://www.cnblogs.com/aslongas/p/6015454.html
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可
本文链接://old.doracoin.cc/linux-modify-rm/