Linux - 实现简单的回收站功能
实现简单回收站中碰到的问题和解决方法:
问题:
1.在删除文件的时候,怎么获得文件的绝对路径?
可以使用pwd命令 + 双引号进行路径拼接
2.位置变量不可以在shell函数中调用?
本来是想将删除脚本和还原脚本封装成函数,后来发现位置变量似乎无法在函数中调用
后来将函数部分去除,就可以使用了
3.如何同时删除多个文件?
使用位置变量 $* 来循环获取位置变量的值然后一个一个进行循环,删除和还原
4.如果储存文件路径信息的文本文件里面有多个同样的路径信息怎么解决?
使用 sort 排序和uniq命令去重
###############################################################################
运行结果:
###############################################################################
删除脚本:
#!/bin/bash
# 思路;
# 回收站功能的实现:
# 新建文件夹用来存放被删除的文件
# 删除文件的时候使用pwd记录删除文件的绝对路径,方便还原
# 使用拼接将文件的绝对路径连接起来给mv命令使用
# 删除脚本
read -p "请问是否删除 $* (y/n) : " choice
if [ $choice == y ]
then
for i in $*
do
del_path=$(pwd)
del_f_name=$i
delfile=$(pwd)
mv $delfile"/"$del_f_name /del_backup
echo $del_f_name":"$del_path >> /del_backup/position.txt
echo "成功删除$i文件"
done
elif [ $choice == 'n' ]
then
echo "取消删除成功"
else
echo "输入有误"
fi
###############################################################################
还原脚本
#! /bin/bash
# 还原脚本
# 循环取位置变量的值进行还原
for i in $*
do
# 将存在position.txt文件中的原文件绝对路径取出来
res_path=$(cat /del_backup/position.txt|sort|uniq | grep $i |awk -F: '{print $2}')
echo "要还原的路径 : $res_path"
cd /del_backup
mv $i $res_path 2>/dev/null
echo "成功还原 $i 文件"
done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通