2024年11月Linux如何开启回收站功能(2)

发布时间:

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

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

  ⑶清单 .用户交互

  ⑷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 #####

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

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

  ⑽清单 .删除大于 G 的文件

  ⑾for file in $

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

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

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

  ⒂`rm –rf $file`

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

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

  ⒅`rm –rf $file`

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

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

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

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

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

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

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

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

  ⒎详细代码如下所示:

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

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

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

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

  ⒓mark=“。”

  ⒔mark=“/”

  ⒕if [ “$file” = ${file/$mark} ]

  ⒖fullpath=“$(pwd/$file”

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

  ⒘fullpath=“$(pwd${file/$mark}”

  ⒙fullpath=“$file”

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

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

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

  ②echo “files: $file is deleted”

  ③echo “the operation is failed”

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