OS X`rm`을 안전하게 대체 하시겠습니까? 작동이 중지됩니다. 나는 trash-cli파이썬 에 대해 알고 있지만

나는 rm더 안전한 것을 알리는 데 익숙합니다 .

사용 osx-trash하고 있지만 Ruby 1.9.2로 업그레이드하면 작동이 중지됩니다.

나는 trash-cli파이썬 에 대해 알고 있지만 파일을 다른 디렉토리가 아닌 OS X의 휴지통 폴더로 옮기는 것을 선호합니다.

누구든지 좋은 해결책이 있습니까?



답변

OSX의 경우 사용할 수 있습니다 safe-rm

brew install safe-rm

기본값보다 선호하는 추가 단계를 수행해야합니다 rm. symlink를 추가하십시오.

echo $PATH

나를 위해, 나는 /usr/local/bin:먼저 safe-rm설치 와 동일한 디렉토리를 가지고 있습니다

에 심볼릭 링크 추가 safe-rm

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

기본값을 제거하고 복원하려면 rmsymlink를 제거하십시오.rm /usr/local/bin/rm

구성 파일은 /etc/safe-rm.conf

예 :

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

rm -rf /test그것으로 테스트 에서 삭제를 거부합니다safe-rm.conf


답변

hasseg.org/trashosx-trash 와 같은 Objective-C 유틸리티 입니다.

필자는 파일을 덮어 쓰지 않는 쉘 함수를 작성했습니다 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
}


답변

소개 (당신은 그것을 생략 할 수 있습니다)

나를 위해 rm -i이 모든 파일을 삭제하기 전에 메시지를 표시하기 때문에, 충분한 것이다. 그러나 제공되는 추가 보안 safe-rm은 전혀 나쁜 생각이 아닙니다.

간단한 aliasrm=safe-rm -i 있지만, 충분 rm -rf하기 때문에, 작동하지 않을 것입니다 -i의해 오버라이드 (override)됩니다 -f.

그래서 우리는 -i항상 뒤 따르 도록해야합니다 -f!


내 솔루션 (3 단계) :

  • safe-rm 설치 : brew install safe-rm

    계속 작업 할 수 rm있지만 RM_BIN다음 단계에서를 수정했습니다 .

  • ~/.profile(또는 bash_profile 또는 무엇이든)을 편집 하고 다음 코드 스 니펫 ( alias및 a 포함)을 넣으십시오 function.

    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 없이 WITHOUT 을 사용하려는 경우 계속 사용할 수 있습니다 /bin/rm -rf(또는 safe-rm -rf설치 한 경우).
  • 더 이상 의도하지 않은 rm -rf 또는 rm * 😉

답변