Linux 修改 rm 命令防止误操作 – 哆啦钢镚的博客
Doracoin
i@doracoin.me
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

本站文章除注明转载外,一律采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议进行许可,转载请注明出处

Linux 修改 rm 命令防止误操作
一直以来 rm 就是一个危险的操作,关于这个命令还有不少幽默段子以及真实经历,为了自己的人生不戏剧化,所以我决定对它进行改造改造。 思路上最简单的就是两种: 1. 一是修改系统登录…
扫描二维码继续阅读
2018-07-18