||
默认情况下rm不会在删除文件前提示用户是否真的这么作,删除后也不能再从系统中恢复。本节将设计一个相对“安全”的delete命令来替代rm。首先来看一下究竟有哪些事情要做:
l 在用户的主目录下添加目录.trash用作回收站
l 在每次删除文件和目录前向用户确认
l 将需要“删除”的文件和目录移动到~/.trash中。
下面是这个脚本完整的代码:
##建立回收站机制
##将需要删除的文件移动到~/.trash中
#! /bin/bash
if [ ! –d ~/.trash ]
then
mkdir ~/.trash
fi
if [ $# -eq 0 ]
then
#提示delete的用法
echo “Usage: delete file1 [file2 file3 ……]”
else
echo “you are about to delete these files:”
echo $@
#要求用户确认是否删除这些文件。回答N或n放弃删除,其他字符表示确认。
echo –n “Are you sure to do that? [Y/n]:”
read reply
if [ “$reply” != “n” ] && [ “$reply” != “N” ]
then
for file in $@
do
#判断文件或目录是否存在
if [ -f “$file” ] || [ -d “file” ]
then
mv –b “$file” ~/.trash/
else
echo “$file: No such file or directory”
fi
#如果用户回答N或n
else
echo “No file removed”
fi
fi
注意在使用mv命令移动文件时使用了-b选项,这样当~./trash中已经存在文件名的时候,mv不会简单地把它覆盖,而是先改名,然后把文件移动过去。
最后把delete脚本复制到/bin目录下,这样用户就不需要每次使用时都指定一个绝对路径了。
$ cp delete /bin/
不过这个delete并不完美,例如它不能处理文件名中存在空格的情况。读者可以尝试改进这个脚本程序,来满足自己的需要。
Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )
GMT+8, 2024-11-24 11:31 , Processed in 0.030104 second(s), 18 queries , Gzip On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.