OS X `rm` 的安全替代品吗?

OS X `rm` 的安全替代品吗?

我习惯rm使用更安全的东西的别名。

我一直在使用osx-trash,但是一旦我升级到 Ruby 1.9.2,它就停止工作了。

我了解trash-cliPython,但我更喜欢将文件移动到 OS X 中的“垃圾”文件夹而不是其他目录。

有人有好的解决办法吗?

答案1

对于 OSX,你可以使用safe-rm

brew install safe-rm

您需要执行额外的步骤来使其优于默认值rm- 添加符号链接。

echo $PATH

对我来说,我首先有一个与安装/usr/local/bin:相同的目录safe-rm

添加符号链接至safe-rm

ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

要删除并恢复默认设置,rm您可以删除符号链接rm /usr/local/bin/rm

配置文件可以添加到/etc/safe-rm.conf

例如:

/private
/Applications
/Developer
/Library
/Network
/System
/Users
/Volumes
/test

用它测试rm -rf /test将拒绝删除safe-rm.conf

答案2

hasseg.org/垃圾是 Objective-C 实用程序,例如osx-垃圾

我编写了一个 shell 函数,它不会像mv * ~/.Trash预期的那样覆盖文件。但它始终将项目移动到启动卷。

trash() {
    for f in "$@"; do
        bn=$(basename "$f")
        while [ -e ~/.Trash/"$bn" ]; do
            bn="$bn $(date +%H.%M.%S %p)"
        done
        mv "$f" ~/.Trash/"$bn"
    done
}

答案3

简介(可以跳过)

对我来说rm -i这就足够了,因为它会在删除任何文件之前提示你。不过,提供一些额外的安全保护safe-rm也不错。

简单alias点赞rm=safe-rm -i 可以就足够了,但是rm -rf不起作用,因为-i被覆盖了-f

因此,我们必须确保这一点-i始终如一-f


我的解决方案(3个步骤):

  • 安装 safe-rm:brew install safe-rm

    您仍然可以使用,但您必须在下一步中rm修改RM_BIN

  • 编辑您的~/.profile(或 bash_profile 或其他),并放入以下代码片段(其中包含aliasfunction):

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • 最后logoutlogin,因此 .profile 中的更新被应用。在注销/登录之前使用它!


笔记:

  • 只需稍加修改即可应用于任何 Linux 发行版。
  • 它不会让您的员工感到沮丧。它只是在删除每个文件之前询问您!
  • 它与正则表达式一起工作-rf
  • 如果你真的想使用rm -rf 没有询问您是否仍然可以使用每个文件/文件夹/bin/rm -rf(或者safe-rm -rf是否已经安装它)。
  • 不再无意 rm -rf 或者 rm *;)

相关内容