'rm'파일을 휴지통으로 옮기려면 어떻게해야합니까?


62

나는 매일 터미널을 사용하고 자주 사용 rm DirectoryName합니다. 때때로 나는 약간 미쳐서한다 rm *. 당신이 상상할 수 있듯이,이 shenanigans는 때때로 돌아와서 얼굴을 때렸습니다. 누구든지 내가 매핑을 만드는 방법을 알고 있으므로 rm whatever휴지통으로 모든 것을 옮기고 수동으로 삭제합니다.


3
당신은 할 수 있습니다mv /file/to/delete ~./Trash

6
다른 스크립트를 깨뜨리지 않고 rm과 같은 정밀 도구에 훈련 휠을 배치하기는 어렵습니다. 같은 뭔가 alias rm=/bin/rm -i안전하게 가야 미친에서 훈련 . 또한-어떤 휴지통 디렉토리에서 rm을 사용 하시겠습니까? Mac OS X에는 각 볼륨에 대한 휴지통 디렉토리와 사용자 레벨 휴지통이 있기 때문에 어수선합니다.
bmike

1
당신이 zsh을 사용하는 경우, 기본적으로 당신이 할 때를 묻는 메시지가 표시됩니다 rm *또는rm /path/*
다니엘 Serodio

1
이것이 매우 위험한 질문이라고 생각하는 사람들의 목록에 저를 추가하십시오. 당신이 나를 위해 일했다면, 나는 당신이 쉘 프롬프트에서 "약간 미치겠 다"고 'rm'과 같은 명령을 내리지 않기로 약속 할 때까지 당신을 때리지 않기 위해 고투 할 것입니다. 또한 내가 사용하거나 담당하는 컴퓨터에 대해 sudo 관리 권한이 없음을 두 배로 확인합니다. "rm"또는 "sudo"를 입력하기 전에 신체적으로 일어 서서 내가하려는 일의 영향을 이해한다고 100 % 확신하는지 스스로에게 묻습니다. 아마도 당신은 "rm -rf"를하고 잠시 동안 고통을받을 것입니다.
윌프레드 스미스

내 의견이 잔인하게 보일 경우 사전에 사과하지만 그 질문은 저를 놀라게합니다.
윌프레드 스미스

답변:


79

나쁜 생각

사용 rm휴지통 파일을 이동하는 것은 잡초 같다. 일반적이며 유쾌하지만 앞으로는 나쁠 수 있습니다 . ;)

를 사용할 때는 실제로 스스로 제어해야합니다 rm.


rm을 사용하지 마십시오

당신이 쓰레기로 이동 하고 습관을 버는 데 익숙해 졌다고 상상해보십시오 . 물론 시스템은 안전하지만 친구 (또는 아내 또는 상사) 노트북에 로그인하여 무언가를 삭제해야합니까? 실제로 실제 rm파일을 삭제하여 파일을 영구적으로 삭제합니다. 나쁜 습관 이니 알아야합니다.

대신, 설치 rmtrash하고 사용하는 습관을 만드십시오.

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

나쁜 습관 교정

자신을 rmtrash대신 사용하도록 강요하기 위해 할 수있는 또 다른 작업 rm은의 사용자 지정 메시지 별칭 .profile입니다.

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

당신이 사용할 때마다 그래서 rm, 당신은 사용 중 하나로하라는 메시지가 표시됩니다 rmtrash/bin/rm. 잠시 후에 별칭을 제거해야합니다.


절대 이런 식으로하지 마십시오 :

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

팝 퀴즈 : 어떤 디렉토리에서 rm명령이 실행됩니까? :)

추신 :이 게시물에 대한 원치 않는 편집 내용을 제거하여 별칭에 대한 약간의 센스가 추가되었습니다.


14
&&당신의 생명선입니다. ;악마 야 추신 답변은 위의 예에서 시스템의 모든 것이 사라진다는 것입니다.
Jason Salaz

rm은 보안 삭제를 수행하지 않지만 휴지통 / 비우기로 이동하면 (내 설정).
Mike Graf

1
데비안 / 우분투 사용자는 trash-cli대신 설치 합니다. -github.com/andreafrancia/trash-cliaptitude install trash-cli 참조
Daniel Sokolowski

@ jm666 또한 휴지통을 확인하십시오 ( 블로그 게시물소스 ). 파인더에 파일 휴지통을 묻습니다. 또한 표준 Objective C 파일 시스템 API (빠른)를 사용하고 권한이 충분하지 않으면 Finder로 대체 할 수도 있습니다. brew install trash
parth

rmtrash2003 년에 마지막으로 업데이트 된 것은 정말 오래된 것입니다. 그것은보다 적은 많은 옵션을 가지고 rm, 당신이 말한다면 rmtrash보조 볼륨이 이동 대용량 파일에 대한 시간이 오래 걸릴 수 있습니다 시스템 드라이브에 사용자의 휴지통 폴더에 해당 파일을. trashparth에서 권장하는 옵션은 많은 킵 - 온 - 동일 볼륨 문제를 해결하지만, 아직 행방 불명, 더 나은 rm옵션을.
워렌 영

25

나는 이것을 코딩하는 12 가지 방법을 생각할 수 있지만 대답으로 그중 하나를 입력하는 것을 거부합니다. 나는 약간 미쳐 버리는 습관을 억제 하는 것이 좋습니다 . 당신이 사용하는 습관을해서는 안됩니다 제대로 사용할 수없는 경우 전혀.rm

여기서 근본적인 문제는 자신의 시스템에 안전망을 설치하더라도 나쁜 습관을 유지하는 데 도움이되며 언젠가 동일한 사용자 지정 보호 기능이없는 다른 기계에있을 때 도움이 될 것입니다. 매우 나쁜 일을하십시오.

glob의 확장 방법에 대해 의문이있을 때마다 인수 rm를 수동으로 추가하고 -i심각한 사용자 오류가 발생하는 경우 복원 할 수있는 우수한 시스템 백업을 포함하여 사용하도록 의도 된대로 올바른 솔루션을 사용 하는 것이 좋습니다. 나머지 우주에서 사용하지 않는 명령에 "휴지통"을 추가하려고 시도하는 것은 두 세계에서 최악의 중간 단계입니다.

휴지통을 사용하거나 사용하지 마십시오. 사용하면rm휴지통으로 이동하지 않고 제거됩니다.

휴지통을 사용하려면 아무 문제가 없습니다. rmtrash대신 명령 을 사용하는 습관을 들이십시오 rm. 이것은 당신의 두뇌가 무슨 일이 일어나고 있는지 이해하고 나중에 슬픔을 일으킬 나쁜 습관에 빠지지 않도록 도와 줄 것입니다.


1
이 시점에서 포인트가 계산되지 않습니다. 사람들은 실수로 매일 물건을 삭제하고, 자원이 제한되어 있기 때문에 가정용 PC의 경우 시스템 백업이 작동하지 않습니다. 휴지통으로 옮기는 것이 내 삭제를 처리하는 훨씬 효율적인 방법입니다. 유스 케이스.
steve

5
@ steve 당신은 요점을 완전히 놓쳤다. rm정의상 디스크에서 파일을 제거합니다. 휴지통으로 보내지 않습니다. 휴지통으로 보낼rm 때 사용하도록 자신을 가르치면 재난을 당하게됩니다. 휴지통, 사용 또는 작업용으로 설계된 프로그램 으로 보내려면 나중에 악몽에 빠지지 않습니다. 휴지통을 사용하는 것이 본질적으로 잘못되었다고 말하지는 않았지만 사용하려는 경우 사용하지 않는 것으로 연결하지 마십시오! rmtrash
Caleb

2
brew install rmtrashrm
GabLeRoux

이것은 멋진 답변이며 몇 가지 사항을 해결했습니다. rmtrash대신에 사용 습관을 형성하려고 노력할 것입니다 rm.
Sheharyar

sudo add-apt-repository ppa : nateshmbhat / rm-trash입니다. 그런 다음 "rm-trash"
Natesh bhat를

3

의 끔찍한 결과로부터 자신을 보호 할 수있는 방법이 있습니다 rm. 그러나 나는 다른 주석가들에 동의합니다.

명령 환경을 변경하면 도움이 될 것이라고 잠시 믿지 마십시오. 예를 들어, 온라인에있는 사람들은 이런 종류의 작업을 권장합니다.

alias rm="rm -i"

또는

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

작동하지 않습니다. 기간. 이 작은 팔러 트릭으로 인해 비참하게 실패하는 유스 케이스가 많이 있습니다.

내가 위험을 피하기 위해 사용한 유일한 강력한 방법 rm은 내가 작업하는 디렉토리에 대해 cron을 통해 정기적 인 백업 프로세스를 설정하는 것입니다. Raw UNIX는 특정 시간 내에 또는 특정 시간 이후에 업데이트 된 파일을 확인하기 위해 find함께 사용하여 매우 간단하게 -mtime제공합니다.


cron혼자 +1 . 감사합니다 :)
bmike

2

rmtrash 와 같은 명령 행 도구를 사용 하거나 스크립트 tat는 appscript를 사용하여 Finder를 호출하여 삭제를 수행합니다.

rmus를 설치하여 / usr / local / bin / rmtrash라고 말하면 bash의 별명은 creat입니다.

alias rm='rmtrash'

\ rm을 사용하여 rm을 직접 호출하고 별칭을 무시할 수 있습니다.


14
와 같은 도구를 사용하는 경우 rmtrash자신에게 유리한 이름으로 사용하십시오 . 하지 마십시오 별칭 일 rm에는 rm, 그것은 언젠가 당신을 물린 것입니다.
Caleb

1
rmtrashrm( 와 같은 명령 줄 매개 변수를 지원하지 않음) 과 호환 되지 않으므로 -r별명은 실제로 어떤 경우에도 유용하지 않습니다
Perry

의 별칭 rmtrash을 지정 하는 것은 좋지 않습니다 rm. 그것들은 호환되지 않을뿐만 아니라 나쁜 습관을 강요하고 실수 rm로 다른 시스템에서 사용 하고 있다고 생각합니다 rmtrash.
Fayaz

1

아직하지 않은 사람들을 위해 유용한 습관을 추가하고 싶을뿐입니다. 무엇이든 rm을 사용하기 전에 먼저 'ls'를 수행하십시오. 이렇게하면 삭제하려는 모든 파일을 볼 수 있습니다. 그런 다음 다시 입력하는 대신 이전 'ls'명령을 끌어 올리고 rm을 ls로 바꿉니다. 이 습관은 rm을 호출 할 때 많은 불안을 줄였습니다.


-1

소개 (생략 할 수 있음)

나를 위해 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 * ;)

5
rm을 그 자체보다 큰 것으로 알리는 것 (예 alias rm='sudo rm':)은 부엌 칼에 Uzi를 묶는 것과 같습니다. 언젠가 그 파인애플을자를 때 흥정했던 것보다 더 많은 것을 얻게 될 것입니다. rm을 그 자체보다 작은 것 (예 alias rm='rmtrash':)으로 알리는 것은 아이들이 무장 해제 수류탄을 가지고 놀도록하고 실제로는 무엇인지 가르치지 않는 것과 같습니다. 어느 쪽이든 — 앨리어싱 별칭은 개인의 안전과 공중 보건에 좋지 않습니다!
Caleb

2
safe-rm과 같은 것을 사용하는 것은 합리적인 조언입니다. rm에 알리는 것은 아닙니다. 자체 이름이나 고유 한 별칭으로 사용하여 항상 존재하지 않는 안전망을 당연하게 여기지 마십시오.
Caleb

너의 의도를 알 겠어. 그러나 내가 이것을 한 이유는 많은 터미널과 함께 일하기 때문입니다. 일부 원격 터미널과 일부 로컬 사람들. 그리고 나는 원격 단말기 에 수류탄 을 많이 던지고 싶지만 실수로 로컬 터미널 의 안전 씰 을 당기면 폭발 이 발생 하기 전에 경고 를보고 싶습니다 .
Paschalis

@Paschalis 및 스크립트 또는 설치된 프로그램을 사용해야하는 경우 어떻게됩니까 rm? 또한 Caleb의 요점은 훨씬 더 유효합니다. 안전한 rm 별칭을 가진 시스템에 익숙해지면 무모하게 될 수 있으며 결국 unaliased rm이있는 시스템에서 사용할 수 있습니다.
Manishearth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.