fedora下总是会把文件不小心删除了,所以下面的脚本把实现:文件删除默认移动到自己的回收站里面。
功能:
-
脚本实现删除文件或者目录到~/waste/(自己定义)。
-
脚本附带文件名或者目录名,则默认代表”删除”,移动到回收站。
-
参数 -l 代表列出回收站内容,后面不带参数则列出所有内容,可以指定文件或者目录。
-
-d 代表清空回收站,后面不带参数为清空回收站,也可以指定删除文件或者目录。
-
脚本执行权限为root。
首先以root权限创建一个回收站
$ mkdir ~/waste
下面是脚本内容
#!/bin/bash
arg_del_flag=0 #删除标志,默认是不删除
arg_list_flag=0 #list标志,默认不list
Waste_Path="/root/waste/"
if [ $# -lt 1 ]; then
echo "usage : $0 -[l|d] [filename]"
exit 1
fi
file_num=0
for param in $@
do
case $param in
"-d")
arg_del_flag=1 #删除
continue
;;
"-l")
arg_list_flag=1 #list
continue
;;
"-"*)
echo "unknow \"$param\""
echo "usage : $0 -[l|d] [filename]"
continue
;;
*)
file[$file_num]="$param" #文件名
let file_num++
;;
esac
done
i=0
if [ $arg_del_flag -eq 1 ]; then
cd ${Waste_Path}
if [ $# -eq 1 ];then #删除所有
rm -rf ${Waste_Path}*
exit 0
fi
while [ $i -lt $file_num ]
do
if [ -f ${file[$i]} ];then #如果是普通文件
rm -f ${Waste_Path}${file[$i]}
elif [ -d ${file[$i]} ];then #如果是目录
rm -rf ${Waste_Path}${file[$i]}
else
echo "${file[$i]} is not existed"
fi
let i++
done
exit 0
fi
if [ $arg_list_flag -eq 1 ]; then
cd ${Waste_Path}
if [ $# -eq 1 ];then #list所有
ls -l ${Waste_Path}
exit 0
fi
while [ $i -lt $file_num ]
do
if [ -s ${file[$i]} ];then #文件是否存在 -s 表示文件存在窃长度大于0,成功返回
ls -l ${Waste_Path}${file[$i]}
else
echo "${file[$i]} is not existed"
fi
let i++
done
exit 0
fi
#不存在-l 或者 -d 选项,删除文件
while [ $i -lt $file_num ]
do
if [ -f ${file[$i]} -o -d ${file[$i]} ];then #确保文件存在
mv ${file[$i]} ${Waste_Path}
if [ $? == 0 ];then
echo "${file[$i]} deleted successfully"
fi
else
echo "${file[$i]} is not existed"
fi
let i++
done
exit 0
把脚本执行权限修改,然后添加到系统环境变量中!
上面脚本还存在一个小bug,就是在进入回收站判断文件是否存在的时候,我用了一个-s选项,若是文件存在且长度大于0,则返回成功。我昨天写脚本测试的时候把空的文件丢到了回收站,所有一直就结了很久。希望大家多多指教!
分享到:
相关推荐
linux bash vim配置文件,不错的配置,可以节省大家时间。
到此这篇关于Linux bash:./xxx:无法执行二进制文件报错的文章就介绍到这了,更多相关Linux 无法执行二进制文件 内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!...
linux bash shell 实现源码
这个是官方的bash源代码,如果想要深入研究的可以下载下来看看,包括了所有shell常见功能,比如通配符、自动补全、别名、变量等等,当然最基本的管道和输入输出重定向也实现了。 需要在linux环境下编译运行。
linux shell bash 源码等等
Bash Shell 管理Linux
1.上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Korn ...
Linux的bash练习
高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程! 高级linux bash shell 编程!
linux shell scripting with bash,讲linux下shell编程,全英文版,喜欢的下
bash基本的配置文件示例 可控制bash基本属性
如果要退出bash有2种...1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6MAINTAINER Fanbin Kong “kongxx@hotmail.com”RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/
Bash中文手册,适合Linux shell入门级使用!
linux平台的bash shell开发帮助文档(手册),英文版,版本4.2。日常开发shell翻阅, 章节如下: Definitions:: Some definitions used i n the rest of this manual. Basic Shell Features:: The shell "building ...
Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记Linux bash基本语法笔记
根据MD5HASH监控LINUX的目录文件 是否被改变
mo - 用纯bash实现的Mustache 模板
在linux下进行bash编程来维护系统 是linux运维手册 shell编程
linux系统修复之缺失bash
bash-full-of-colors - 高级.bashrc和.bash_profile并拥有彩色输出