您的位置:首页 > 运维架构 > Shell

修改rm命令防止误删

2016-08-22 10:24 260 查看
   相信很多使用Linux的同学都有过使用rm手滑误删数据的遭遇,我也就把写了半个月的代码误删了而已…….,其实网络上已经有很多方法来修改rm命令,用过在.bashrc中修改rm的方法,也用过别人写好的python包trash-cli,由于种种原因,最后都使用的不是很友好。最终决定自己写shell来修改rm命令,原因是简单、代码量少、可控性高(这个是重点)。废话不多说,代码和注释如下:

# 在当前用户的home(最好在opt)目录下创建.trash目录(回收站),编辑.bashrc, 追加以下代码.
TRASH_DIR=/home/yxx/.trash          # 设置回收站目录路径
alias rm=trash                      # 将rm命令用trash来实现
alias list_trash='ls ${TRASH_DIR}'  # 显示回收站中的文件
trash()                             # 移动文件到回收站TRASH_DIR目录
{
for file_path in $@;
do
# 利用IFS分割Unix风格的文件路径
OLD_IFS="$IFS"
IFS="/"
array=($file_path)
IFS="$OLD_IFS"

# 在分割出的字符串数组中获取文件名(注意冒号后有空格)
file_name=${array[@]: -1}

# 删除文件(将当前时间作为后缀,方便误删后恢复,也防止回收站中不允许同名文件存在)
mv ${file_path} ${TRASH_DIR}/${file_name}.`date +%Y%m%d-%H:%M:%S`
done
}
clear_trash()                   # 清空回收站TRASH_DIR目录下的所有文件
{
read -p "clear sure?
" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ${TRASH_DIR}/*
}


   修改完后使用
source ~/.bashrc
使上面的修改生效。现在使用rm命令删除目录和文件时如下:

# 删除文件/目录(rm的本质是mv,所以不需要-rf参数)
rm file_name
rm dir_name
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell rm