系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > Linux开启回收站功能

Linux如何开启回收站功能(2)

时间:2015-01-16 18:12:10 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: http://m.xitongzhijia.mg188.cn/xtjc/20150116/35150.html 手机查看 评论

  如果用户在命令中加入了-f 选项,则 delete 脚本会直接调用 rm 命令将文件或目录直接删除。如代码中所示,所有的参数包括选项都会传递给 rm 命令。所以只要选项中包括选项-f 就等于调用 rm 命令,可以使用 rm 的所有功能。如:delete –rfv filename 等于 rm –rfv filename。

  用户交互

  需要与用户确认是否将文件放入回收站。相当于 Windows 的弹窗提示,防止用户误操作。

  清单 4.用户交互

  echo -ne “Are you sure you want to move the files to the trash?[Y/N]:\a”

  read reply

  if [ $reply = “y” -o $reply = “Y” ]

  then #####

  判断文件类型并直接删除大于 2G 文件

  本脚本只对普通文件和目录做操作,其他类型文件不做处理。先对每个参数做循环,判断他们的类型,对于符合的类型再判断他们的大小是否超过 2G,如果是则直接从系统中删除,避免回收站占用太大的硬盘空间。

  清单 5.删除大于 2G 的文件

  for file in $@

  do

  if [ -f “$file” –o –d “$file” ]

  then

  if [ -f “$file” ] && [ `ls –l $file|awk ‘{print $5}’` -gt 2147483648 ]

  then

  echo “$file size is larger than 2G,will be deleted directly”

  `rm –rf $file`

  elif [ -d “$file” ] && [ `du –sb $file|awk ‘{print $1}’` -gt 2147483648 ]

  then

  echo “The directory:$file is larger than 2G,will be deleted directly”

  `rm –rf $file`

  如以上代码所示,该脚本用不同的命令分别判断目录和文件的大小。鉴于目录的大小应该是包含其中的文件以及子目录的总大小,所以运用了‘du -sb’命令。两种情况都使用了 awk 来获取特定输出字段的值来作比较。

  移动文件到回收站并做记录

  该部分是 Delete 脚本的主要部分,主要完成以下几个功能

  获取参数的文件名。因为用户指定的参数中可能包含路径,所以要从中获取到文件名,用来生成 mv 操作的参数。该脚本中运用了字符串正则表达式‘${file##*/}’来获取。

  生成新文件名。在原文件名中加上日期时间后缀以生成新的文件名,这样用户在浏览回收站时,对于每个文件的删除日期即可一目了然。

  生成被删文件的绝对路径。为了以后可能对被删文件进行的恢复操作,要从相对路径生成绝对路径并记录。用户输入的参数可能有三种情况:只包含文件名的相对路径,包含点号的相对路径以及绝对路径,脚本中用字符串处理对三种情况进行判断,并进行相应的处理。

  调用 logTrashDir 脚本,将回收站中的新文件名、原文件名、删除时间、原文件绝对路径记录到隐藏文件中

  将文件通过 mv 命令移动到 Trash 目录下。

  详细代码如下所示:

  清单 6.移动文件到回收站并做记录

  now=`date +%Y%m%d_%H_%M_%S`

  filename=“${file##*/}”

  newfilename=“${file##*/}_${now}”

  mark1=“。”

  mark2=“/”

  if [ “$file” = ${file/$mark2} ]

  then

  fullpath=“$(pwd)/$file”

  elif [ “$file” != ${file/$mark1} ]

  then

  fullpath=“$(pwd)${file/$mark1}”

  else

  fullpath=“$file”

  fi

  echo “the full path of this file is :$fullpath”

  if mv -f $file ~/trash/$newfilename

  then

  $(/logTrashDir “$newfilename $filename $now $fullpath”)

  echo “files: $file is deleted”

  else

  echo “the operation is failed”

  fi

  上面就是Linux开始回收站功能的方法介绍了,虽然没有Windows系统那么方便,但是使用命令还是能够轻易实现的。

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

扫码关注
扫码关注

扫码关注 官方交流群 软件收录