让代码更简单

非图形化Linux使用shell实现回收站功能

重要:本文最后更新于2023-06-10 09:29:13,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

如果你的Linux机器没有安装面板,你会发现删除文件后文件真的就没了,不会像Windows一样给你放在回收站里。一旦错误操作删除文件后,除了恢复数据就真的找不回来了,为了避免删错文件,有人使用shell脚本实现了回收站的功能。

Linux教程

Linux教程

实现功能如下:

  • 除了删除文件之外,还可以删除目录。
  • 可以指定相对路径,也可以指定绝对路径。
  • 如果非root用户没有权限,记得在脚本中修改garbage目录的路径。

首先连接到你的Linux机器中,root账号登录,使用vim编辑一段脚本代码。

复制
vim del

输入上面的代码回车就会出现编辑页面,按下i进入插入模式,然后插入如下代码。

复制
#!/bin/bash
#脚本作用:Linux的回收站
#blog: https://blog.csdn.net/NetRookieX

garbage_dir="/root/garbage"

#若文件不存在
if [ ! -e $1 ]; then
echo "删除失败 ‘$1’: No such file or directory"
exit 1
fi

get_new_filename(){
#文件名与删除时间的分隔符
sep_char="_"


#分离出文件名
old_filename=`echo "$1" | awk -F/ '{print $NF}'`

len_old_filename=${#old_filename} 
let temp=len_old_filename-1

#若参数为目录,则去除最后的/ 
if [ ${old_filename:temp} = "/" ]; then
old_filename=${old_filename:0:$temp}
fi

#得到新文件名
cur_time=`date "+%Y%m%d%H%M%S"`
new_filename="$old_filename$sep_char$cur_time"

echo $new_filename
return 0
}

#创建垃圾桶
mkdir -p $garbage_dir

new_filename=`get_new_filename $1`

mv $1 $garbage_dir/$new_filename

然后使用:wq退出并保存脚本文件。

使用如下命令赋予我们编辑的脚本可执行权限,并移动到我们的软件目录中。

复制
chmod +x del 
mv del /usr/local/bin

然后进入我们的软件目录,执行脚本。

复制
cd /usr/local/bin
./del

运行之后,你就会发现,在/root/目录下多了一个garbage的目录,里面包含了你删除的文件,而且文件名中还带有删除的日期。

转载自CSDN博客原文地址:https://blog.csdn.net/NetRookieX/article/details/101166615

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐