因为rm -rf /* 较为危险,所以可以编写一个rm方法来代替rm命令
vim /etc/profile.d/rm.sh
在rm.sh输入如下代码
1 #!/bin/bash
2 function rm(){
3 [ -d /dustbin ] || mkdir /dustbin;#检查/下是否有dustbin目录,没有则创建
4 var=$@ #获取所有参数,$1是参数1,$2是参数2,$@所有参数
5 echo ${var}
6 var=${var/-i -rf/} #把参数中的-i -rf字符替换为空
7 echo ${var}
8 /bin/mv -f ${var} /dustbin; #-f有相同文件名,覆盖前不询问
9 }
10 export -f rm #导出rm方法,使其可以被子shell继承
export -f function_name 导出方法后,子shell运行的脚本可以继承方法
接下来赋予该文件执行权限,并重新生效该文件
chmod +x /etc/profile.d/rm.sh #赋予该脚本执行权限
. /etc/profile.d/rm.sh #用source或 . 重新使该脚本生效
此时使用 rm -rf /tmp/a.txt ,则会把a.txt 移动至/dustbin文件夹中
因为使用rm命令会被rm方法替代,因为同名方法优先级比同名命令高
如果想使用rm命令,则需要前置command
例如 command rm -rf /tmp/a.txt
如果此时执行 rm -rf /* 则变为执行 mv /* /dustbin,会把动态链接库文件移动至/dustbin目录下,导致出现问题
解决方法在此链接 https://blog.csdn.net/workey/article/details/107225078