重定义rm命令并创建几条命令实现linux系统下的回收站功能的一种方法
2019-06-08 10:01
711 查看
linux:重定义rm命令并实现回收站功能
基本原理
linux下的rm命令不像windows,执行了就直接删除,没有后悔药。如果一不小心执行了rm -rf / 那么下次开机怕是都启动不了了,为了避免这种情况,我们需要把rm命令给限制一下,以防止出现误删文件的情况。
原理就是通过.bashrc的alias将rm命令重定义,使rm命令变成调用mv命令将要删除的文件移动到回收站。
重映射rm命令
# 定义回收站目录 trash_path='.trash' # 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path. if [ ! -d $trash_path ]; then mkdir -p $trash_path fi # 定义别名:使用 rm 就调用 trash alias rm=trash # 使用 rl 就调用 'ls ~/.trash' # 如果更改上面的回收站目录这里的目录也需要修改 alias rl='ls ~/.trash' # 使用 unrm 就调用 restorefile,需要在删除目录的父目录下执行 alias unrm=restorefile # 使用 rmtrash 就调用 claearteash alias rmtrash=cleartrash # 恢复文件的函数 restorefile() { mv -i ~/.trash/$@ ./ } # 删除文件的函数 trash() { mv $@ ~/.trash/$@`date +%%%F%%%T` } # 清空回收站的函数 cleartrash() { read -p "确定要清空回收站吗?[y/n]" confirm [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* }
将上面的脚本内容添加到 ‘home/用户名/’ 目录下的 .bashrc 文件中,下次用户连接时会自动加载其配置,或者直接执行 source .bashrc 立即生效
重映射后,rm 文件名 就变成了将文件移动到回收站 ,同时获得删除文件的时间和日期,这样就算回收站中有同名的文件或者文件夹也没关系。
操作回收站的几个命令
另外还添加了几个命令:
rl
查看回收站的内容
unrm
后悔命令,恢复回收站的文件内容。需要在删除目录的父目录下执行,并且要输入正确的文件名参数,不可以不传入参数,不然会把整个回收站都给搬回来。。。
rmtrash
手动清空回收站的命令,执行后删除回收站文件夹下的所有内容,这回真的没有后悔药了。
因为 重映射了rm命令,所以rm -rf就不再可用了,如果仍需要调用rm命令,需要输入 /bin/rm {参数} 进行绝对调用,仍然想要删库跑路的可以用这种手法。
当然这样删除文件后文件只是会移动到回收站,如果懒得手动清空,可以写一个定时清理脚本,添加到crontab中定时执行
定时清空垃圾箱.trash, 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本
编辑crontab文件中条目: crontab -e
添加: 0 0 * * * rm -rf ~/.trash/*
相关文章推荐
- Linux系统利用cp命令实现强制覆盖功能的方法
- Linux 终端命令 rm 删除的文件进入回收站实现方法
- Linux 终端命令 rm 删除的文件进入回收站实现方法
- C语言实现Linux系统下ls命令的过滤文件功能
- linux下利用系统函数实现rm -rf的功能!
- Linux系统下,使用rm命令删除文件的恢复方法
- 创建静态类,定义一个泛型方法,实现查找数组元素的功能。
- linux下使用系统调用编程实现copy命令功能
- c#创建静态类,在其中定义一个泛型方法,实现查找数组元素的功能
- linux下rm命令修改,增加回收站功能
- Linux系统中ln命令创建软链接与硬链接的方法
- linux下使用系统调用编程实现dir命令功能
- linux下通过字符模块实现类似ps命令的查看系统进程方法
- 教你一种实现嵌入式Linux系统新方法
- linux中使用rm命令将文件移到回收站的方法
- linux rm命令自定义回收站功能
- linux创建文件系统方法
- Linux创建文件命令的方法
- Linux下获得系统时间的C语言的实现方法
- 用C语言实现Linux命令的cat功能