找回密码
 注册
搜索

17. 定制工具:安全的delete命令

已有 186 次阅读2014-2-3 11:51 |个人分类:SHELL编程| shell定制, 用户delete命令, shell编程

默认情况下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 $@

 

    #要求用户确认是否删除这些文件。回答Nn放弃删除,其他字符表示确认。

    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

    #如果用户回答Nn

else

    echo “No file removed”

fi

fi

注意在使用mv命令移动文件时使用了-b选项,这样当~./trash中已经存在文件名的时候,mv不会简单地把它覆盖,而是先改名,然后把文件移动过去。

最后把delete脚本复制到/bin目录下,这样用户就不需要每次使用时都指定一个绝对路径了。

$ cp delete  /bin/

不过这个delete并不完美,例如它不能处理文件名中存在空格的情况。读者可以尝试改进这个脚本程序,来满足自己的需要。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

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.

返回顶部