나는 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
기본값을 제거하고 복원하려면 rm
symlink를 제거하십시오.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/trash 는 osx-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
은 전혀 나쁜 생각이 아닙니다.
간단한 alias
등 rm=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 }
-
마지막으로 ,
logout
및login
.profile의 업데이트가 적용됩니다. 로그 아웃 / 로그인하기 전에 사용 하지 마십시오 !
노트:
- 약간의 수정으로 모든 Linux 배포판에 적용 할 수 있습니다.
- 스태프를 움직이지 않습니다. 각 파일을 삭제하기 전에 묻습니다!
-rf
정규식과 함께 작동합니다 .- 모든 단일 파일 / 폴더에 대해 요청
rm -rf
없이 WITHOUT 을 사용하려는 경우 계속 사용할 수 있습니다/bin/rm -rf
(또는safe-rm -rf
설치 한 경우). - 더 이상 의도하지 않은
rm -rf
또는rm *
😉