自定义rm删除至回收站

本文介绍了如何创建并自定义一个名为myrm的命令,使得删除操作不直接永久删除文件,而是将文件移至回收站。通过在/usr/bin/目录下创建myrm文件,并在用户的.bashrc配置中添加相关操作,实现这一功能。不论是root用户还是普通用户,都可以通过这种方法安全地管理删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防止rm命令误删文件导致文件不可恢复,使用自定义的rm命令将文件以移动置回收站,并可通过命令将文件恢复及清空回收站。
1、删除命令: rm/rm -r/rm -rf
2、恢复命令:ur 文件名
3、清空回收站某个文件:cr 文件名
4、清空回收站:cleartrash
回收站位置:~/.local
普通用户在用户目录中的./local中
root目录在 /root/.local中

自定义rm方法:
创建文件:myrm 并将其放在/usr/bin/目录中

TRASH=~/.local/share/Trash
TRASHFILE=$TRASH/files
TRASHINFO=$TRASH/info
set -e  #Exit immediately if any untested command fails in non-interactive mode. 

if [[  $1 =~ ^-[^rf] ]]; then
	echo "usage: rm [-rf] files"
	exit 1
fi

if [ $# == 0 ]; then
	echo "usage: rm [-rf] files"
	exit 2
fi 

mkdir -p $TRASHFILE
mkdir -p $TRASHINFO
echo rm $@

if [[ $1 =~ ^-[rf]|^-rf$ ]]; then
	for (( i=2;i<=$#;i++ )); do
		eval file="\${$i}"         
		#echo ${file%%/*}
		trashinfo=(${file%%/*}'.trashinfo')
		if touch $TRASHINFO/$trashinfo; then
		{
			directory=$(pwd)
			echo $directory |sudo tee $TRASHINFO/$trashinfo
			echo "$file => $TRASHFILE"
			mv "$file" $TRASHFILE
		}
		fi
	done
else 
	for (( i=1;i<=$#;i++ )); do
		eval file="\${$i}"         
		#echo ${file%%/*}
		trashinfo=(${file%%/*}'.trashinfo')
		if touch $TRASHINFO/$trashinfo; then
		{
			directory=$(pwd)
			echo $directory |sudo tee $TRASHINFO/$trashinfo
			echo "$file => $TRASHFILE"
			mv "$file" $TRASHFILE
		}
		fi
	
		#eval file="\${$i}"
		#echo "$file => $TRASHFILE"
		#mv "$file" $TRASHFILE
	done    
fi

向~/.brashrc文件中添加操作方法
注:要root用户或普通用户都可使用将该文件放在/root/和用户家目录中

alias ur=undelfile
alias cr=clearfile
alias rm=myrm

TRASH=~/.local/share/Trash
TRASHFILE=$TRASH/files
TRASHINFO=$TRASH/info

mkdir -p $TRASH
mkdir -p $TRASHFILE
mkdir -p $TRASHINFO

#ur recovery the files,恢复某个文件
undelfile()
{
	strpath=$(sudo cat $TRASHINFO/$@.trashinfo)
	if sudo mv -i $TRASHFILE/$@ $strpath ;then 
		sudo rm -rf $TRASHINFO/$@.*
	fi
}

#rm move the files to trash
#myrm myrm删除

#清除回收站某个文件
clearfile()
{
	strpath=$(sudo cat $TRASHINFO/*.trashinfo)
	read -p "clear $@ sure?[Y] or [N]" confirm
	[ $confirm == 'y' ] || [ $confirm == 'Y' ] && if sudo rm -rf $TRASHFILE/$@; then
		sudo rm -rf $TRASHINFO/$@.*
	fi
}

#清空回收站
#cleartrash delete the files in trash
cleartrash()
{
  read -p "clear sure?[Y] or [N]" confirm
  [ $confirm == 'y' ] || [ $confirm == 'Y' ] && sudo rm -rf $TRASHFILE/* $TRASHINFO/*
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值